Spectre y MeltdownQué debemos Saber?
David Pereira@d4v1dp3r31r4
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
Primero: Breve Explicación:Tanto Meltdown como Spectre, son vulnerabilidadesrelacionadas 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
Meltdown y Spectre: Definición
Debemos recordar que los procesadoresejecutan las instrucciones de forma lineal, esdecir secuencial;Entonces las operaciones podriamos decir que serian:
Speculative execution side-channel attacks
Speculative execution side-channel attacks
Operación A Operación B Operación C
La ejecución será:
El Orden será respetado y se define por parte del programa que se estéejecutando
Pero vemos que esta forma de ejecución podria optimizarsesi pudieramos ir avanzando en tareas correspondientes al mismo programa, pero que no requieran tareas previaspara ser ejecutadas; Ej. Receta para hacer una torta;Mientras mezclamos los ingredientes, podemos irprecalentando el horno;
Speculative execution side-channel attacks
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 otrastareas se pueden ejecutar dentro del procesadorúnicamente, entonces se cambia el orden de ejecución, buscando mayor eficiencia:
Speculative execution side-channel attacks
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á:
ejecutando
Operación A(Solo
Procesador)
Operación B(Procesador y
Memoria)
Operación C(Solo
Procesador)
Operación D(Solo
Procesador) …
Tareas:
Todo lo anterior para explicar que el procesador puedepre-ejecutar ciertas tareas dependiendo del resultado de tareas previas;Así que el procesador casi que ”adivina” o especula, acerca de cualespodrian ser los resultados de tareas y tomar una decisión de ejecutar unaen específico gracias a esa apuesta;Si la apuesta falla, simplemente se eliminan los resultados y se ejecutaen 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
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
En algunos casos, se podria medir o determinar por parte de un atacantesi un valor se encuentra en la memoria caché de un procesador;Si ese valor se encuentra en el caché, el atacante podria inferir otrosdatos 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é; sitoma mas tiempo, el dato no está en caché;
Speculative execution side-channel attacks
Meltdown
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 desdeun canal encubierto del procesador (memoria caché).
Meltdown - CVE-2017-5754
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 enmemoria, 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 cualquierdirección mapeada en la memoria asignada a un proceso determinado.Gracias a la Ejecución especulativa, el atacante puede lograr que suinstrucción maliciosa se cargue (normalmente en caché), incluso sin tenerprivilegios.
Meltdown - CVE-2017-5754
Spectre
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ónespeculativa)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 tomadapor el atacante.
Spectre - CVE-2017-5715/5753
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
Impacto: Sobrecarga de ProcesamientoPosterior al Parchado de Meltdown
Principalmente podemos identificar 2, que se subdividen en muchos mas:1. Escalación de Privilegios2. Salida/Escape de Entornos limitados como Virtualización
(Hipervisores) o Paravirtualización.
Escenarios de Riesgo
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
Escape de la Virtualización:El atacante podria acceder a direcciones de memoria del kernel y de esaforma acceder al exterior de la virtualización, afectando el Host Físico.Esto podria suceder en Paravirtualización tipo XEN o en Sandbox tipoDocker.
Escenarios de Riesgo: Meltdown
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
Comparativo de RiesgoImpacto 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
Comparativo Meltdown vs. Spectre
https://danielmiessler.com/blog/simple-explanation-difference-meltdown-spectre/
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
Listado de URLs de parchado
https://danielmiessler.com/blog/simple-explanation-difference-meltdown-spectre/
Microsoft https://www.catalog.update.microsoft.com/Search.aspx?q=KB4056892
Linux https://github.com/IAIK/KAISERhttps://github.com/torvalds/linux/commit/abb7099dbc7a77f8674083050028c493ac601228
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
Los fabricantes de Antivirus para Windows deben colocar una llave de registroindicando la compatibilidad con el parche; de lo contrario podrían ocurrir fallosen 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/184wcDt9I9TUNFFbsAVLpzAtckQxYiuirADzf3cL42FQ/htmlview?usp=sharing&sle=true(Cortesia de Kevin Beaumont (@GossiTheDog))
Que Opciones Tenemos : Parchado
En el navegador Chrome es viable aislar cada sesion por sitio en procesosdiferentes;Esto va a dificultar el que un atacante logre robar los datos que el usuariohaya digitado o entregado en cada sitio.
En el navegador ir a la dirección:chrome://flags#enable-site-per-processY activar la protección;
Que Opciones Tenemos: Aislamiento
Empresas como Intel han generado diferentes soluciones, pero es importanteentender 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 binariocontra el ataque “branch target injection” (Spectre).
Que Opciones Tenemos: Fabricantes
• 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
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
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
Preguntas?Inquietudes?
[email protected]@d4v1dp3r31r4https://www.youtube.com/user/dfpluc2