¿Cómo mitigar las vulnerabilidades de Spectre y Meltdown en sistemas Linux?

34

Los investigadores de seguridad han publicado en el Proyecto Cero una nueva vulnerabilidad llamada Spectre y Meltdown que permite que un programa robe información de la memoria de otros programas. Afecta a las arquitecturas Intel, AMD y ARM.

Este defecto se puede explotar de forma remota visitando un sitio web de JavaScript. Los detalles técnicos se pueden encontrar en el sitio web de redhat , el equipo de seguridad de Ubuntu .

Fuga de información a través de ataques de canal lateral de ejecución especulativa (CVE-2017-5715, CVE-2017-5753, CVE-2017-5754, también conocido como Spectre y Meltdown)

Se descubrió que una nueva clase de ataques de canal lateral afecta a la mayoría de los procesadores, incluidos los procesadores de Intel, AMD y ARM. El ataque permite que los procesos maliciosos del espacio de usuario lean la memoria del núcleo y el código malicioso en los invitados para leer la memoria del hipervisor. Para solucionar el problema, se necesitarán actualizaciones del kernel de Ubuntu y el microcódigo del procesador. Estas actualizaciones se anunciarán en futuros Avisos de seguridad de Ubuntu una vez que estén disponibles.

Implementación de ejemplo en JavaScript

Como prueba de concepto, se escribió un código JavaScript que, cuando se ejecuta en el navegador Google Chrome, permite que JavaScript lea la memoria privada del proceso en el que se ejecuta.

Mi sistema parece verse afectado por la vulnerabilidad del espectro. He compilado y ejecutado esta prueba de concepto ( spectre.c).

Información del sistema:

$ uname -a
4.13.0-0.bpo.1-amd64 #1 SMP Debian 4.13.13-1~bpo9+1 (2017-11-22) x86_64 GNU/Linux

$ cat /proc/cpuinfo
model name  : Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz

$gcc --version
gcc (Debian 6.3.0-18) 6.3.0 20170516

¿Cómo mitigar las vulnerabilidades de Spectre y Meldown en sistemas Linux?

Lectura adicional: Uso de Meltdown para robar contraseñas en tiempo real .

Actualizar

Usando Spectre & Meltdown Checkerdespués de cambiar a la 4.9.0-5versión del kernel siguiendo la respuesta de @Carlos Pasqualini porque hay una actualización de seguridad disponible para mitigar el cve-2017-5754 en Debian Stretch:

CVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1'
* Checking count of LFENCE opcodes in kernel:  NO  (only 31 opcodes found, should be >= 70)
> STATUS:  VULNERABLE  (heuristic to be improved when official patches become available)

CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'
* Mitigation 1
*   Hardware (CPU microcode) support for mitigation:  NO 
*   Kernel support for IBRS:  NO 
*   IBRS enabled for Kernel space:  NO 
*   IBRS enabled for User space:  NO 
* Mitigation 2
*   Kernel compiled with retpoline option:  NO 
*   Kernel compiled with a retpoline-aware compiler:  NO 
> STATUS:  VULNERABLE  (IBRS hardware + kernel support OR kernel with retpoline are needed to mitigate the vulnerability)

CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
* Kernel supports Page Table Isolation (PTI):  YES 
* PTI enabled and active:  YES 
> STATUS:  NOT VULNERABLE  (PTI mitigates the vulnerability)

Actualización 25 de enero de 2018

El spectre-meltdown-checkerscript está oficialmente empaquetado por Debian, está disponible para Debian Stretch a través del repositorio de backports, Buster y Sid.

Actualización 22/05/2018

Bypass de almacenamiento especulativo (SSB), también conocido como Variante 4

Los sistemas con microprocesadores que utilizan la ejecución especulativa y la ejecución especulativa de lecturas de memoria antes de que se conozcan las direcciones de todas las escrituras de memoria anteriores pueden permitir la divulgación no autorizada de información a un atacante con acceso de usuario local a través de un análisis de canal lateral.

Rogue System Register Read (RSRE) - también conocida como Variante 3a

Los sistemas con microprocesadores que utilizan la ejecución especulativa y que realizan lecturas especulativas de los registros del sistema pueden permitir la divulgación no autorizada de los parámetros del sistema a un atacante con acceso de usuario local a través de un análisis de canal lateral.

Editar 27 de julio de 2018

NetSpectre: leer memoria arbitraria en la red

En este documento, presentamos NetSpectre, un nuevo ataque basado en la variante 1 de Spectre, que no requiere código controlado por el atacante en el dispositivo objetivo, lo que afecta a miles de millones de dispositivos. Similar a un ataque local de Spectre, nuestro ataque remoto requiere la presencia de un dispositivo Spectre en el código del objetivo. Mostramos que los sistemas que contienen los dispositivos Spectre necesarios en una interfaz de red o API expuesta pueden ser atacados con nuestro ataque Spectre remoto genérico, lo que permite leer memoria arbitraria a través de la red. El atacante solo envía una serie de solicitudes diseñadas a la víctima y mide el tiempo de respuesta para filtrar un valor secreto de la memoria de la víctima.

GAD3R
fuente
1
Eliminé la etiqueta de Debian para permitir que esta Q se aplique a todos los Linux (según el título); revertir si es su intención enfocar esto solo en Debian.
Jeff Schaller

Respuestas:

12

Alan Cox compartió un enlace del blog de AMD: https://www.amd.com/en/corporate/speculative-execution

Variante uno: Bypass de verificación de límites

Resuelto por las actualizaciones de software / SO para que los proveedores y fabricantes del sistema lo pongan a disposición. Impacto de rendimiento insignificante esperado.

Variante dos: inyección de objetivo de rama

Las diferencias en la arquitectura AMD significan que existe un riesgo cercano a cero de explotación de esta variante. La vulnerabilidad a la variante 2 no se ha demostrado en los procesadores AMD hasta la fecha.

Variante tres: carga de caché de datos no autorizados

Cero vulnerabilidad AMD debido a diferencias en la arquitectura AMD.

Sin embargo, sería bueno tener la confirmación de estas declaraciones de AMD por parte de un tercero.

La 'mitigación' en los sistemas afectados requeriría un nuevo núcleo y un reinicio, pero en muchas distribuciones todavía no se han lanzado paquetes con las correcciones:

Debian

Otras fuentes de información que encontré:

Carlos Pasqualini
fuente
12
Una gran cantidad de información de AMD no va a ayudar a un interrogador cuya CPU es un Intel Core.
JdeBP
44
Para el kernel de Linux, vea la publicación de Greg Kroah-Hartman: kroah.com/log/blog/2018/01/06/meltdown-status
alanc
Según las páginas de Debian enlazadas anteriormente (y las páginas enlazadas allí) parece que los parches del núcleo se distribuirán a medida que los proveedores responsables publiquen su microcódigo. Sin embargo, desde security-tracker.debian.org/tracker/CVE-2017-5754 (el único solucionado hasta ahora) parece que las correcciones solo se han puesto a disposición para versiones estables e inestables. ¿Alguien sabe si podemos esperar soluciones para oldstable ("jessie")? No he podido encontrar ninguna declaración de Debian o del equipo de seguridad de Debian sobre este asunto ...
Shevek
11

27 de enero de 2018 Intel Microcode rompe algunos sistemas

La actualización del microcódigo de Intel 2018-01-08 para abordar la ejecución especulativa que ramifica los agujeros de seguridad rompió algunos sistemas. Esto afectó a muchos sistemas Ubuntu del 8 al 21 de enero. El 22 de enero de 2018, Ubuntu lanzó una actualización que vuelve a colocar el Microcódigo más antiguo del 2017-07-07.

Si experimentó problemas con las actualizaciones, reinstaló Ubuntu y apagó las actualizaciones entre 2018-01-08 y 2018-01-22, es posible que desee probar las actualizaciones automáticas de Ubuntu nuevamente.

16 de enero de 2018 Specter actualización en 4.14.14 y 4.9.77

Si ya está ejecutando Kernel versiones 4.14.13 o 4.9.76 como yo, es fácil de instalar 4.14.14y 4.9.77cuando salgan en un par de días para mitigar el agujero de seguridad de Spectre. El nombre de esta solución es Retpoline y no tiene el severo rendimiento anteriormente especulado anteriormente:

Greg Kroah-Hartman ha enviado los últimos parches para las versiones de Linux 4.9 y 4.14, que ahora incluyen el soporte Retpoline.

Esta X86_FEATURE_RETPOLINE está habilitada para todas las CPU AMD / Intel. Para obtener soporte completo, también debe construir el núcleo con un compilador GCC más nuevo que contenga soporte -mindirect-branch = thunk-extern. Los cambios de GCC aterrizaron en GCC 8.0 ayer y está en proceso de ser potencialmente transferido a GCC 7.3.

Aquellos que deseen deshabilitar el soporte de Retpoline pueden arrancar los núcleos parcheados con noretpoline .

Sin entrar en detalles de JavaScript, aquí se explica cómo evitar de inmediato el agujero Meltdown (y a partir del 10 de enero de 2018, la protección del espectro)

Actualización del 12 de enero de 2018

La protección inicial de Spectre está aquí y se mejorará en las próximas semanas y meses.

Linux Kernels 4.14.13, 4.9.76 LTS y 4.4.111 LTS

De este artículo de Softpedia :

Los kernels de Linux 4.14.13, 4.9.76 LTS y 4.4.111 LTS ahora están disponibles para su descarga desde kernel.org, e incluyen más correcciones contra la vulnerabilidad de seguridad de Spectre, así como algunas regresiones de Linux 4.14.12, 4.9 .75 LTS y 4.4.110 núcleos LTS lanzados la semana pasada, ya que algunos informaron problemas menores.

Estos problemas parecen estar solucionados ahora, por lo que es seguro actualizar sus sistemas operativos basados ​​en Linux a las nuevas versiones de kernel lanzadas hoy, que incluyen más actualizaciones x86, algunas correcciones PA-RISC, s390 y PowerPC (PPC), varias mejoras para controladores (Intel i915, crypto, IOMMU, MTD) y los cambios habituales de núcleo y mm.

Muchos usuarios tuvieron problemas con las actualizaciones de Ubuntu LTS el 4 de enero de 2018 y el 10 de enero de 2018. He estado usando 4.14.13durante un par de días sin ningún problema, sin embargo, YMMV .


Actualización del 7 de enero de 2018

Greg Kroah-Hartman escribió ayer una actualización de estado sobre los agujeros de seguridad del kernel Meltdown y Spectre Linux. Algunos pueden llamarlo el segundo hombre más poderoso del mundo Linux justo al lado de Linus. El artículo aborda los núcleos estables (que se analizan a continuación) y los núcleos LTS que tienen la mayoría de los usuarios de Ubuntu.


Kernels de Linux 4.14.11, 4.9.74, 4.4.109, 3.16.52 y 3.2.97 Fallo de fusión de parches

De este artículo :

Se insta a los usuarios a actualizar sus sistemas de inmediato

4 de enero de 2018 01:42 GMT · Por Marius Nestor

Los mantenedores de kernel de Linux Greg Kroah-Hartman y Ben Hutchings han lanzado nuevas versiones de la serie de kernel Linux 4.14, 4.9, 4.4, 3.16, 3.18 y 3.12 LTS (Soporte a largo plazo) que aparentemente corrige uno de los dos defectos de seguridad críticos que afectan a la mayoría de los modernos procesadores

Los núcleos Linux 4.14.11, 4.9.74, 4.4.109, 3.16.52, 3.18.91 y 3.2.97 ahora están disponibles para descargar desde el sitio web kernel.org, y se insta a los usuarios a actualizar sus distribuciones GNU / Linux a estas nuevas versiones si ejecutan cualquiera de esas series de kernel inmediatamente. ¿Por qué actualizar? Porque aparentemente corrigen una vulnerabilidad crítica llamada Meltdown.

Como se informó anteriormente, Meltdown y Spectre son dos exploits que afectan a casi todos los dispositivos alimentados por procesadores modernos (CPU) lanzados en los últimos 25 años. Sí, eso significa casi todos los teléfonos móviles y computadoras personales. Meltdown puede ser explotado por un atacante sin privilegios para obtener maliciosamente información confidencial almacenada en la memoria del núcleo.

Parche para la vulnerabilidad Spectre aún en proceso

Si bien Meltdown es una vulnerabilidad grave que puede exponer sus datos secretos, incluidas las contraseñas y las claves de cifrado, Spectre es aún peor y no es fácil de solucionar. Los investigadores de seguridad dicen que nos perseguirá durante bastante tiempo. Se sabe que Specter explota la técnica de ejecución especulativa utilizada por las CPU modernas para optimizar el rendimiento.

Hasta que se repare también el error de Spectre, se recomienda encarecidamente que al menos actualice sus distribuciones GNU / Linux a cualquiera de las versiones de kernel de Linux recientemente lanzadas. Busque la nueva actualización del kernel en los repositorios de software de su distribución favorita e instálela lo antes posible. No esperes hasta que sea demasiado tarde, ¡hazlo ahora!


Había estado usando Kernel 4.14.10 durante una semana, así que descargué e inicié Ubuntu Mainline Kernel versión 4.14.11 no era una gran preocupación para mí.

Los usuarios de Ubuntu 16.04 pueden sentirse más cómodos con las versiones de kernel 4.4.109 o 4.9.74 que se lanzaron al mismo tiempo que 4.14.11.

Si sus actualizaciones regulares no instalan la versión de Kernel que desea, puede hacerlo manualmente siguiendo esta respuesta de Ask Ubuntu: https://askubuntu.com/questions/879888/how-do-i-update-kernel-to-the-latest -mainline-version / 879920 # 879920


4.14.12 - Qué diferencia hace un día

Menos de 24 horas después de mi respuesta inicial, se lanzó un parche para corregir la versión del kernel 4.14.11 que pueden haber precipitado. Se recomienda actualizar a 4.14.12 para todos los usuarios de 4.14.11. Greg-KH dice :

Estoy anunciando el lanzamiento del kernel 4.14.12.

Todos los usuarios de la serie de kernel 4.14 deben actualizarse.

Hay algunos problemas menores aún conocidos con esta versión que la gente se ha encontrado. Esperemos que se resuelvan este fin de semana, ya que los parches no han aterrizado en el árbol de Linus.

Por ahora, como siempre, pruebe su entorno.

Mirando esta actualización, no se cambiaron muchas líneas de código fuente.

WinEunuuchs2Unix
fuente
1
La solución existe para Meltdown ahora, disponible a través de apt-get dist-upgrade.
luchonacho
1
En mi teléfono ahora, pero la actualización en LTS causa pánico en el núcleo el 10/01/2018. Ver Pregúntale a Ubuntu.
WinEunuuchs2Unix
1
Afortunadamente lo actualicé con 109 (108 da el kernel panic). Entonces no tuve ese problema. Funciona bien.
luchonacho
1
@ WinEunuuchs2Unix hay una actualización aquí USN-3531-2: Regresión de microcódigo de Intel
GAD3R
1
@ GAD3R Muchas gracias por el enlace. Me ayudó a publicar una respuesta en Ask Ubuntu que podría ayudar a muchas personas: askubuntu.com/questions/998471/…
WinEunuuchs2Unix
6

Este defecto se puede explotar de forma remota visitando un sitio web de JavaScript.

En efecto. Entonces, una mitigación sensata es deshabilitar JavaScript en sus navegadores web, o usar navegadores web que no sean compatibles con JavaScript.

La mayoría de los navegadores que admiten JavaScript tienen una configuración para deshabilitarlo. Alternativamente, si desea mantener una lista blanca de sitios o dominios para los cuales permitir JavaScript, existen varios complementos que pueden ayudar, como uBlock Origin y NoScript .

Nota: debería decir que deshabilitar / restringir JavaScript no debería ser su única mitigación. Además, debe revisar (y probablemente aplicar) las correcciones de kernel relevantes y otras actualizaciones de seguridad una vez que se escriben, prueban y publican. En las distribuciones derivadas de Debian, utilizar comandos tales como sudo apt update , sudo apt list-upgradable, y sudo apt upgrade.

Actualización: no confíes en mi palabra. Alan Cox dice lo mismo:

Lo que sí debe preocuparse en grande es javascript porque javascript puede usar el exploit de forma remota en las páginas web para robar cosas de la memoria de su sistema. ... considere cosas como Adblockers y extensiones como noscript que pueden evitar que se ejecute mucha basura en primer lugar. Hazlo lo antes posible. Cuando aparezcan las actualizaciones del sistema operativo, aplíquelas. ( Fuente )

sampablokuper
fuente
55
Disculpe, aunque esto ayuda contra el ataque, sin JS, no habría podido dejar la respuesta aquí. Este consejo es similar a "dejar de usar Internet" (en 2018).
Moritz Ambos
44
@ MoritzBoth, afortunadamente, muchos sitios funcionan bien sin JS. Lamentablemente, StackExchange requiere JS para publicar, como usted señala. Esa es una deficiencia (¡grave!) En SE :(
sampablokuper
3
Para FireFox, un noScript como complemento podría ayudar a reducir el uso de JavaScript en sitios dudosos, aunque los cambios recientes provocados por FF Quantum (V57) han arrojado una piedra muy grande en todo el conjunto de complementos de FF ...
SlySven
2
Desde el lanzamiento de Quantum, he cambiado a Pale Moon, exactamente por esta razón. Funciona para mí muy bien, incluyendo NoScript y Cookie Masters (una vez Cookie Monster).
Murphy
2
@ MoritzBoth Realmente no creo que deshabilitar JS signifique "dejar de usar la web", y mucho menos "dejar de usar Internet". Sin embargo, este es un buen momento para crear conciencia sobre los problemas que vienen con la dependencia universal de JS por parte de algunos proveedores de contenido web.
Tobia Tesan
5

El hecho de que esto sea explotable utilizando JavaScript no es el punto principal, y no debería ser la principal preocupación (aunque es importante porque de esta manera el código remoto puede ejecutarse fácilmente en su sistema, pero este no es el único forma en que esto puede suceder).

Su enfoque no debe estar en Javascript y / o su navegador. Idealmente, su CPU debería ser parcheada. Desafortunadamente, para la mayoría de la ola actual de errores esto no parece ser posible. Debian, en conjunto, todas las demás partes proveedoras del sistema operativo, por lo tanto, irán por la única otra forma posible de recomendar una CPU que no tenga fallas: obligan al sistema a solucionar el error en la CPU. Esos parches no solucionan los problemas. En cambio, el sistema operativo los oculta lo mejor que puede de cualquier programa que un usuario ejecute en la máquina (y, por lo tanto, también en su navegador).

Esta ocultación es un trabajo computacional adicional y, por lo tanto, el rendimiento general de su sistema será menor que sin él. Cuánto más bajo depende en gran medida de lo que hacen exactamente esos programas.

Con eso en mente de vuelta a su pregunta: lo que puede hacer para proteger su sistema Debian es instalar actualizaciones de seguridad. Confío en que Debian hará todo lo posible a la luz de estos errores para ejecutar Debian de la manera más segura posible a pesar de los defectos inherentes de la CPU.

Todo tipo de grandes empresas ya están trabajando en este tema, al igual que numerosos gurús del hardware y Linux. No quiero evitar que intentes algo tú mismo o intentes ayudar al esfuerzo general. Sin embargo, si su propia seguridad y una solución oportuna es todo lo que le interesa, lo más probable es que encuentren una mejor solución en menos tiempo que usted, comenzando ahora a buscarlo usted mismo.

usuario68856
fuente