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 Checker
después de cambiar a la 4.9.0-5
versió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-checker
script está oficialmente empaquetado por Debian, está disponible para Debian Stretch a través del repositorio de backports, Buster y Sid.
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.
fuente
Respuestas:
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 Variante dos: inyección de objetivo de rama Variante tres: carga de caché de datos no autorizadosSin 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é:
fuente
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.14
y4.9.77
cuando 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: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 :
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.13
durante 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 :
Mirando esta actualización, no se cambiaron muchas líneas de código fuente.
fuente
apt-get dist-upgrade
.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
, ysudo apt upgrade
.Actualización: no confíes en mi palabra. Alan Cox dice lo mismo:
fuente
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.
fuente