QuédebemosSaber? · 2018. 1. 12. · Una tarearequiereaccedera registrosde memoriay otras tareasse...

Preview:

Citation preview

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?

david.pereira@secpro.org@d4v1dp3r31r4https://www.youtube.com/user/dfpluc2