¿Qué son Meltdown y Spectre y cuál es su impacto en los usuarios?

Recientemente, fueron encontrados nuevos fallos a nivel de procesadores que abarcan tres vulnerabilidades y que afectan de forma diferente según el procesador. Se trata de Meltdown y Spectre, dos amenazas diferentes descubiertas por equipos de seguridad distintos, el primero fue descubierto por investigadores de la Universidad Técnica de Graz, en Austria, la firma de seguridad alemana Cerberus Security y Project Zero de Google, mientras que el segundo fue descubierto independientemente por Project Zero y el investigador en seguridad independiente Paul Kocher.

Según reportes, ambos fallos se aprovechan del hecho de que los procesadores modernos ejecutan instrucciones de forma especulativa, por lo que ejecutan las instrucciones correspondientes en caso de que se dé una condición verdadera y las descarta en caso de ser falsa.

El predictor de saltos tiene una tabla llamada buffer de salto objetivo (branch target buffer) que se encarga de almacenar ciertas localizaciones como direcciones de salto, por lo que incluso las ubicaciones de memoria descartadas quedan almacenadas en una caché.

Pero ¿Cómo afectan estos fallos en los procesadores modernos? Según el site “Muy seguridad” afectan de esta manera:

Meltdown:

Meltdown fue el fallo que impulsó la actualización de todos los sistemas operativos y se apoya en la ejecución especulativa para filtrar datos desde el kernel a los programas que suelen usar los usuarios, además, abarca una vulnerabilidad cuyo código es CVE-2017-5754.

Los procesadores Intel, AMD y ARM llevan a cabo operaciones especulativas sobre los accesos a la memoria, pero los de la primera compañía realizan esto de forma especialmente agresiva. La memoria de los sistemas operativos tiene metadatos asociados que determinan si se puede acceder desde los programas del usuario o si bien dicho acceso está restringido solo al kernel.

Los procesadores de Intel también permiten a los programas de los usuarios utilizar de forma especulativa datos del kernel para que de esta manera la comprobación de acceso por parte del programa del usuario ocurra un tiempo después de que la instrucción haya iniciado su ejecución.

Se podría bloquear la ejecución especulativa de manera correcta, pero su impacto en la caché del procesador puede ser medido, abriendo la puerta a deducir los valores almacenados en la memoria del kernel.

Cabe destacar que los investigadores no fueron capaces de llevar a cabo el mismo tipo de ejecución especulativa sobre la memoria del kernel en AMD y ARM, pero no descartan que se pueda realizar de alguna forma.

AMD repitió en varias ocasiones que sus procesadores no especulan con las direcciones de la memoria del kernel de la misma manera que permite la explotación Meltdown, mientras que ARM reconoció que algunos modelos son vulnerables y publicó un parche para el kernel Linux con el fin de corregir el problema.

Pero ell caso de Intel es más grave, debido a que cualquier memoria del kernel puede ser leída por los programas del usuario. Para corregir el problema, que lleva presente desde 1995, eliminó el mapeo del kernel compartido, lo que ha provocado la separación total de la memoria del kernel y las aplicaciones ejecutadas por el usuario, además de la posible merma en el rendimiento del sistema operativo, ya que ahora cada cambio que se haga en la memoria del kernel va a requerir que sus páginas estén recargadas.

Spectre:

Se trata de un ataque de tipo más general basado en una mayor cantidad de características de la ejecución especulativa, por lo que puede ser llevado a cabo con éxito contra los procesadores AMD y ARM, además de Intel. Abarca dos vulnerabilidades, cuyos códigos son CVE-2017-5753 y CVE-2017-5715.

De esta manera, Spectre se ejecuta mediante la utilización de especulación sobre una matriz de comprobación de límites o instrucciones de salto para filtrar información.

Además de filtrar información del kernel a los programas del usuario, también puede ser utilizado desde hipervisores de virtualización hacia los sistemas invitados.

Lo peor de Spectre es que su solución no es tan sencilla como en el caso de Meltdown, por lo que los parches liberados para los distintos sistemas operativos todavía no lo corrigen, aunque también es algo más complicado de explotar.

Esto sucede porque la especulación es necesaria para los procesadores de alto rendimiento, y aunque se podría bloquear la ejecución de ciertas operaciones especulativas, no se sabe de momento cómo aplicar una técnica que evite cualquier fuga de información provocada por la ejecución especulativa.

Ciertas piezas de código sensibles pueden ser modificadas para incluir instrucciones de serialización, que son instrucciones que obligan al procesador a esperar a que finalicen todas las operaciones de lectura y de escritura en la memoria y así, evitar cualquier especulación en dichas operaciones. ARM, Intel y AMD ya desarrollaron o están desarrollando instrucciones para al menos mitigar Spectre.

¿Cuál es el impacto para los usuarios?

Se trata de un problema que se presenta por la anulación de un sistema de protección incorporado en los sistemas operativos: ASLR. En otras palabras, el impacto directo de Meltdown y Spectre en los escritorios comunes no tendría que ser muy grande, es más bien un apoyo para la ejecución de ataques y la explotación de otras vulnerabilidades, ya que ninguno es capaz de salirse de la ejecución de un navegador web, solo por mencionar un ejemplo.

One thought on “¿Qué son Meltdown y Spectre y cuál es su impacto en los usuarios?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *