GNU/Linux >> Tutoriales Linux >  >> Linux

Prueba de vulnerabilidad de CPU Spectre y Meltdown y actualización de microcódigo en Linux



Introducción a las vulnerabilidades de CPU Spectre y Meltdown

Una forma de bloquear estos ataques es vaciar las memorias caché en determinados momentos, eliminando la información extraída antes de que el atacante pueda acceder a ella. Descargar el caché después de cada llamada al sistema probablemente bloquearía una amplia gama de ataques especulativos, pero también ralentizaría el sistema hasta el punto de que los usuarios buscarían formas de desactivar el mecanismo. La seguridad de la información es muy importante, pero los costos son demasiado altos cuando el vaciado de los cachés de memoria reduce un tiempo de producción precioso.

Los ataques que utilizan la ejecución especulativa implican convencer al procesador para que especule sobre una ruta que no seguirá la ejecución no especulativa. Por ejemplo, una función del kernel puede contener una verificación de límite que evitará que el código acceda más allá del final de una matriz, lo que provocará que se devuelva un error. Un ataque que utilice la vulnerabilidad de Spectre omitirá esa comprobación de forma especulativa, accediendo a datos a los que el código se escribió específicamente para no acceder. El retorno de error es una pista de que tal vez esté sucediendo algo inapropiado, pero para entonces, el daño ya estará hecho.

Cómo verificar si su servidor Linux es vulnerable a los errores de la CPU de Spectre

Comprobador de espectro y fusión es un script de shell que busca errores en las siguientes CPU Intel/AMD/ARM y otras CPU:

  • CVE-2017-5753:omisión de comprobación de límites (variante 1 de Spectre). Debe volver a compilar el software y el kernel con un compilador modificado que introduzca el código de operación LFENCE en las posiciones adecuadas en el código resultante. El impacto en el rendimiento de la mitigación es insignificante.
  • CVE-2017-5715:inyección de destino de rama (Spectre Variant 2). El impacto en el rendimiento de la mitigación depende de su CPU.
  • CVE-2017-5754:carga de caché de datos no autorizada (Meltdown). Debe instalar la versión actualizada del kernel con parches PTI/KPTI. Actualizar el kernel es suficiente. El impacto en el rendimiento de la mitigación es de bajo a medio.

spectre-meltdown-checker.sh es un script de shell simple para averiguar si su kernel (instalación) de Linux es vulnerable contra los 3 CVE de "ejecución especulativa".

Instalación

El script debe ejecutarse como root usuario. Puede ver el código fuente a continuación. Use el comando wget o el comando curl para obtener el código fuente en su caja de Linux:

$ cd /tmp/
$ wget https://raw.githubusercontent.com/speed47/spectre-meltdown-checker/master/spectre-meltdown-checker.sh

O

$ git clone https://github.com/speed47/spectre-meltdown-checker.git

Ejemplos de resultados:

Clonación en 'spectre-meltdown-checker'...

remoto:Contando objetos:155, listo.

remoto:Comprimir objetos:100 % (20/20), listo.

remoto:Total 155 (delta 18), reutilizado 21 (delta 10), paquete-reutilizado 125

Recepción de objetos:100 % (155/155), 49,78 KiB | 145,00 KiB/s, listo.

Resolviendo deltas:100% (88/88), hecho.

Cómo comprobar la vulnerabilidad de Spectre y Meltdown en Linux

Ejecute el script como usuario root usando el comando sudo o el comando su:

$ sudo sh spectre-meltdown-checker.sh

Salidas de muestra del escritorio de Ubuntu Linux:

Otra salida de mi servidor CentOS 7.x donde Meltdown/Spectre v1 fue parcheado con Kernel:

$ sudo sh spectre-meltdown-checker.sh

¿Cómo instalar/actualizar el firmware del microcódigo Intel en Linux?

Un microcódigo no es más que el firmware de la CPU proporcionado por Intel o AMD. El kernel de Linux puede actualizar el firmware de la CPU sin la actualización del BIOS en el momento del arranque. El microcódigo del procesador se almacena en la RAM y el kernel actualiza el microcódigo durante cada arranque. Estas actualizaciones de microcódigo de Intel/AMD necesitaban corregir errores o aplicar erratas para evitar errores de CPU. Esta página muestra cómo instalar la actualización de microcódigo de AMD o Intel mediante el administrador de paquetes o las actualizaciones de microcódigo del procesador proporcionadas por Intel en Linux.

Cómo averiguar el estado actual del microcódigo

Ejecute el siguiente comando como root usuario:

# dmesg | grep microcode

Salidas de muestra:


Cómo instalar el firmware de microcódigo Intel en Linux usando un administrador de paquetes

La herramienta para transformar e implementar la actualización del microcódigo de la CPU para x86/amd64 viene con Linux. El procedimiento para instalar el firmware de microcódigo AMD o Intel en Linux es el siguiente:

  1. Abra la aplicación de terminal
  1. Tipo de usuario de Debian/Ubuntu Linux:sudo apt install intel-microcode
  1. Tipo de usuario de CentOS/RHEL Linux:sudo yum install microcode_ctl

Los nombres de los paquetes son los siguientes para distribuciones populares de Linux:

  • microcode_ctl y linux-firmware:paquete de actualización de microcódigo CentOS/RHEL
  • intel-microcode:paquete de actualización de microcódigo de Debian/Ubuntu y clones para CPU Intel
  • amd64-microcode:Debian/Ubuntu y firmware de microcódigo clonado para CPU AMD
  • linux-firmware:firmware de microcódigo Arch Linux para CPU AMD (instalado de forma predeterminada y no es necesario que haga nada)
  • intel-ucode:firmware de microcódigo Arch Linux para CPU Intel
  • microcode_ctl, linux-firmware y ucode-intel:paquete de actualización de microcódigo de Suse/OpenSUSE Linux

Advertencia:en algunos casos, la actualización del microcódigo puede causar problemas de arranque, como que el servidor se cuelgue o se reinicie automáticamente en el momento del arranque. Hazlo bajo tu propio riesgo.

Ejemplos

Escriba el siguiente comando apt/comando apt-get en Debian/Ubuntu Linux para CPU Intel:

$ sudo apt-get install intel-microcode

Salidas de muestra:



Debe reiniciar la caja para activar la actualización del microcódigo:

$ sudo reboot

Verifíquelo después de reiniciar:

# dmesg | grep 'microcode'

Si usa RHEL/CentOS, intente instalar o actualizar los dos paquetes siguientes con el comando yum:

$ sudo yum install linux-firmware microcode_ctl
$ sudo reboot
$ sudo dmesg | grep 'microcode'

¿Cómo actualizar/instalar el microcódigo descargado del sitio de Intel?

Solo use el siguiente método cuando lo recomiende su proveedor; de lo contrario, apéguese a los paquetes de Linux como se describe anteriormente. La mayoría de los mantenedores de distribución de Linux actualizan el microcódigo a través del administrador de paquetes. El método del administrador de paquetes es seguro según lo probado por muchos usuarios.

¿Cómo instalar el blob de microcódigo del procesador Intel para Linux (versión 20180108)?

Visite el sitio de AMD o Intel para obtener el firmware de microcódigo más reciente. Primero extráigalo usando el comando tar:

$ mkdir firmware
$ cd firmware
$ tar xvf ~/path/to/file/microcode-20180108.tgz
$ ls –l

Salidas de muestra:

Asegúrese de que /sys/devices/system/cpu/microcode/reload salga:

$ ls -l /sys/devices/system/cpu/microcode/reload

Debe copiar todos los archivos de intel-ucode a /lib/firmware/intel-ucode/ usando el comando cp:

$ sudo cp -v intel-ucode/* /lib/firmware/intel-ucode/

Acaba de copiar el directorio intel-ucode en /lib/firmware/. Escriba la interfaz de recarga a 1 para recargar los archivos de microcódigo:

# echo 1 > /sys/devices/system/cpu/microcode/reload

Actualice un initramfs existente para que la próxima vez se cargue a través del kernel:

$ sudo update-initramfs -u
$ sudo reboot

Verificando que el microcódigo se actualizó en el arranque o se volvió a cargar con el comando echo:

# dmesg | grep microcode

Eso es todo. Acaba de actualizar el firmware de su CPU Intel.


Linux
  1. Linux:¿configurar, compilar e instalar un kernel de Linux personalizado?

  2. Linux:¿diferencia entre el espacio del usuario y el espacio del kernel?

  3. ¿El kernel de Linux no se actualizará a 2.35.25?

  4. Introducción a las interrupciones de Linux y CPU SMP Affinity

  5. Límite de línea de shebang en bash y kernel de linux

CPU Power Manager:controle y administre la frecuencia de la CPU en Linux

Instale Linux Kernel 4.15 en sistemas basados ​​en RPM y DEB

Cómo usamos Linux Test Project para probar y mejorar Linux

Cómo actualizar Manjaro y otras distribuciones de Linux basadas en Arch

¿Cómo aplicar los parches de seguridad del kernel de Linux? ¿Manual y automáticamente sin reiniciar?

Introducción a la supervisión y el ajuste del rendimiento de Linux