2. CEO de Secpro – Security Professionals
CEH, ECSA/LPT, CHFI, ENSA, ECSS, ECVP, CEI, QGSS, ECIH, EDRP, NFS, OPSEC,
CICP, CND, CCISO.
+20 Años de experiencia en Seguridad Informática y DFIR
Hacker Ético – Pentester en diversas Entidades en el mundo, en ámbitos como
el Financiero, Energético, Militar, Inteligencia, Diplomático, Minero, entre otros
Instructor / Consultor de Fuerzas de Ciberdefensa, Fuerzas Militares y Policía, en
varios Países.
David Pereira
3. Primero: Breve Explicación:
Tanto Meltdown como Spectre, son vulnerabilidades
relacionadas al Procesador/CPU de los equipos de
Cómputo;
Primero se habló de los procesadores Intel, pero luego se
confirmó que afecta a: Intel, AMD y ARM;
Ambas aprovechan algo que se llama:
“speculative execution side-channel attacks”
Meltdown y Spectre: Definición
5. Debemos recordar que los procesadores
ejecutan las instrucciones de forma lineal, es
decir secuencial;
Entonces las operaciones podriamos decir que
serian:
Speculative execution side-channel
attacks
7. Pero vemos que esta forma de ejecución podria optimizarse
si pudieramos ir avanzando en tareas correspondientes al
mismo programa, pero que no requieran tareas previas
para ser ejecutadas;
Ej. Receta para hacer una torta;
Mientras mezclamos los ingredientes, podemos ir
precalentando el horno;
Speculative execution side-channel
attacks
8. En el Procesador, funciona asi:
Cuando una tarea puede tomar más tiempo o recursos, Ej.
Una tarea requiere acceder a registros de memoria y otras
tareas se pueden ejecutar dentro del procesador
únicamente, entonces se cambia el orden de ejecución,
buscando mayor eficiencia:
Speculative execution side-channel
attacks
9. Speculative execution side-channel
attacks
Operación A
(Solo
Procesador)
Operación B
(Procesador y
Memoria)
Operación C
(Solo
Procesador)
La ejecución será:
Operación A
(Solo
Procesador)
Operación B
(Procesador y
Memoria)
Operación C
(Solo
Procesador)
Operación D
(Solo
Procesador) …
Tareas:
10. Todo lo anterior para explicar que el procesador puede
pre-ejecutar ciertas tareas dependiendo del resultado de tareas previas;
Así que el procesador casi que ”adivina” o especula, acerca de cuales
podrian ser los resultados de tareas y tomar una decisión de ejecutar una
en específico gracias a esa apuesta;
Si la apuesta falla, simplemente se eliminan los resultados y se ejecuta
en el orden secuencial y no hay pérdidas de tiempo (era tiempo de
espera-idle); pero si “adivinó” bien, ganamos mucho tiempo.
Speculative execution side-channel
attacks
11. Los Side-Channels son precisamente orígenes de datos que toma el
procesador para hacer sus cálculos especulativos; Ej. Microarquitectura,
Características Eléctricas, Mecánicas o Físicas.
Speculative execution side-channel
attacks
12. En algunos casos, se podria medir o determinar por parte de un atacante
si un valor se encuentra en la memoria caché de un procesador;
Si ese valor se encuentra en el caché, el atacante podria inferir otros
datos contenidos en la memoria;
El atacante lo que hace es medir el tiempo de procesamiento con la
siguiente lógica:
Si el acceso a la memoria toma poco tiempo, el dato está en caché; si
toma mas tiempo, el dato no está en caché;
Speculative execution side-channel
attacks
14. Meltdown es una Vulnerabilidad que le permite a un atacante leer de
forma arbitraria, la memoria fisica (incluyendo la memoria del Kernel),
desde un proceso de un usuario no privilegiado.
El Meltdown usa una instruccion fuera del orden para filtrar datos desde
un canal encubierto del procesador (memoria caché).
Meltdown - CVE-2017-5754
15. Se le llama Meltdown por que “derrite” la seguridad que evitaria que un
proceso pudiera saltar los limites de acceso de los datos del Kernel en
memoria, tipo ASLR – Address Space Layout Randomization o KAISER
(ahora KPTI) (Kernel Page Table Isolation)
El ataque permite que un proceso no autorizado, lea datos de cualquier
dirección mapeada en la memoria asignada a un proceso determinado.
Gracias a la Ejecución especulativa, el atacante puede lograr que su
instrucción maliciosa se cargue (normalmente en caché), incluso sin tener
privilegios.
Meltdown - CVE-2017-5754
17. Esta vulnerabilidad permite que un programa ejecutado por el usuario,
pueda acceder a una direccion arbitraria de memoria y leer su contenido;
normalmente se usa un canal encubierto del cache del procesador.
El Spectre se basa en predicción de saltos (subitem de la ejecución
especulativa)
En teoría la predicción errónea, debe ser declarada nula, esa información
“errónea” queda en el caché del procesador, y de ahi puede ser tomada
por el atacante.
Spectre - CVE-2017-5715/5753
18. El Spectre aprovecha:
1. La lógica de predicción de saltos podría ser “entrenada” para acertar
o fallar de acuerdo a lo que determine el programa malicioso.
2. Se puede cronometrar con precisión la diferencia entre aciertos y
fallos.
3. Se pueden ejecutar instrucciones fuera de un sandbox (JavaScript en
un Navegador) forzando la ejecucion de instrucciones que obliguen a
la predicción.
4. Puede manipular un proceso para que revele su propia información.
Spectre - CVE-2017-5715/5753
20. Principalmente podemos identificar 2, que se subdividen en muchos mas:
1. Escalación de Privilegios
2. Salida/Escape de Entornos limitados como Virtualización
(Hipervisores) o Paravirtualización.
Escenarios de Riesgo
21. Escalación de Privilegios:
Al tener acceso a la memoria fisica, el atacante va a poder capturar:
• PIN
• Claves
• Hash
• Etc.
Escenarios de Riesgo: Meltdown
22. Escape de la Virtualización:
El atacante podria acceder a direcciones de memoria del kernel y de esa
forma acceder al exterior de la virtualización, afectando el Host Físico.
Esto podria suceder en Paravirtualización tipo XEN o en Sandbox tipo
Docker.
Escenarios de Riesgo: Meltdown
23. Todos coinciden en que uno de los escenarios mas probables es la
ejecución de JavaScript en un navegador para capturar información del
sistema por fuera del navegador.
Esto permitiría:
1. Filtrar direcciones de memoria del usuario, haciendo evasión de los
controles ASLR, permitiendo ejecución remota por ejemplo.
2. Capturar los datos de memoria del navegador (Contraseñas, Tarjetas
de Crédito, etc.)
3. También el Caché del navegador quedaria en riesgo (Cookies, Tokens)
Escenarios de Riesgo: Spectre
24. Comparativo de Riesgo
Impacto Meltdown Spectre
Lectura de la Memoria del kernel Si En algunos casos
Solucionado con Kaiser/KPTI Si No
Filtra Arbirtrariamente la Memoria de
Usuario?
Si Si
Se podria ejecutar remotamente? En algunos casos Si
Que Impacta? Integridad Kernel Ej. Memoria del
Navegador
Dirigido a: Intel Intel,AMD,ARM
https://www.renditioninfosec.com/files/Rendition_Infosec_Meltdown_and_Spectre_20180108.pdf
25. Comparativo Meltdown vs. Spectre
https://danielmiessler.com/blog/simple-explanation-difference-meltdown-spectre/
26. Parchado:
Se debe ejecutar con mucho cuidado; muchas maquinas posterior a
haber aplicado el parche, dejaron de bootear;
https://www.theverge.com/2018/1/9/16867068/microsoft-meltdown-
spectre-security-updates-amd-pcs-issues
Que Opciones Tenemos: Parchado
27. Listado de URLs de parchado
https://danielmiessler.com/blog/simple-explanation-difference-meltdown-spectre/
Microsoft https://www.catalog.update.microsoft.com/Search.aspx?q=K
B4056892
Linux https://github.com/IAIK/KAISER
https://github.com/torvalds/linux/commit/abb7099dbc7a77f8
674083050028c493ac601228
ARM https://developer.arm.com/support/security-update
VmWare https://www.vmware.com/us/security/advisories/VMSA-
2018-0002.html
Android https://source.android.com/security/bulletin/2018-01-01
Firefox https://www.mozilla.org/en-US/firefox/57.0.4/releasenotes/
Chrome ttps://www.chromium.org/Home/chromium-security/site-
isolation
28. Los fabricantes de Antivirus para Windows deben colocar una llave de registro
indicando la compatibilidad con el parche; de lo contrario podrían ocurrir fallos
en las máquinas, tal como ocurrió con Symantec por ejemplo.
Enlace con la lista de compatibilidad de los diferentes antivirus:
https://docs.google.com/spreadsheets/d/184wcDt9I9TUNFFbsAVLpzAtckQxYiu
irADzf3cL42FQ/htmlview?usp=sharing&sle=true
(Cortesia de Kevin Beaumont (@GossiTheDog))
Que Opciones Tenemos : Parchado
29. En el navegador Chrome es viable aislar cada sesion por sitio en procesos
diferentes;
Esto va a dificultar el que un atacante logre robar los datos que el usuario
haya digitado o entregado en cada sitio.
En el navegador ir a la dirección:
chrome://flags#enable-site-per-process
Y activar la protección;
Que Opciones Tenemos: Aislamiento
30. Empresas como Intel han generado diferentes soluciones, pero es importante
entender que estas podrian afectar performance, tal como ya se ha
demostrado con las soluciones de parchado a nivel de Sistema Operativo.
Una solución de Intel es “retpoline” que es una modificación a nivel binario
contra el ataque “branch target injection” (Spectre).
Que Opciones Tenemos: Fabricantes
31. • Monitoreo Persistente y Granular
• Compartimentación de los Datos de acuerdo a su sensibilidad/importacia
• Reducir los Periodos de Latencia de Parchado/Control de Cambios
• Evaluación de la Arquitectura actual/Actualizacion de Inventario de Activos
• Plan Ejecutivo de Comunicaciones
• Threat Modeling
Estrategias de Defensa Preventivas
32. Datos Especificos de las Vulnerabilidades
https://meltdownattack.com/
Verificacion de protecciones Microsoft con powershell:
https://blogs.technet.microsoft.com/ralphkyttle/2018/01/05/verifying-spectre-meltdown-protections-
remotely/
Detectar si tu navegador es Vulnerable:
http://xlab.tencent.com/special/spectre/spectre_check.html
Explicacion de las Variantes de los ataques:
https://github.com/marcan/speculation-bugs/blob/master/README.md
Enlaces de Interés
33. Verificador de la Vulnerabilidad:
https://github.com/speed47/spectre-meltdown-checker
Prueba de Concepto del Meltdown:
https://github.com/harsaroopdhillon/meltdown
Prueba de Concepto del Spectre:
https://github.com/Eugnis/spectre-attack
Enlaces de Interés