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.