Spectre

From FdIwiki ELP
Jump to: navigation, search

¿Qué es?

Es un fallo de seguridad que pueden sufrir los procesadores que usan instrucciones de predicción de salto. La instrucciónes de predicción de salto, permiten ejecutar a la CPU instrucciones por las que “predice” que un programa se ramificará. Esto se traduce en una mejora de rendimiento significativa. Si la predicción de salto falla, se ejecutara en el procesador instrucciones innecesarias, lo que significa que se pueden acceder a datos privados. La explotación continuada de este tipo de fallos por parte de un atacante puede dar como resultado un volcado de datos cache.


Historia

Descubierto por Jann Hornm del “Google Project Zero”, y Paul Kocher, explicado en el “Google Project Zero” [1] en Enero de 2018. El documento “Google Project Zero”, describe 3 vias o variantes del fallo Spectre y Meltdown : – Variante 1 (CVE-2017-5753, Spectre): Bounds check bypass. – Variante 2 (CVE-2017-5715, también Spectre): Branch target injection. – Variante 3 (CVE-2017-5754, Meltdown): Rogue data cache load, verificación de permisos de acceso a la memoria realizada después de leer la memoria del kernel.


¿Como funciona? / Variantes

Cada vez que el procesador ejecuta una instrucción de predicción de salto, empieza la ejecución de otras instrucciones que tal vez sean desechadas, si el salto se toma, si se toma los cambios producidos se deshacen, pero no se deshacen los cambios producidos en cache.

Spectre se cataloga como un ataque sincronizado de canal lateral, [2] es decir un ataque producido por la propia implementación física del hardware, como pueden ser la monitorización de entrada y salida de elementos de la tabla cache en la CPU de la víctima. En la documentación de la arquitectura de los procesadores, se detalla como los resultados producidos por una falsa predicción son anulados, se ha observado que esta predicción de saltos deja efectos colaterales que pueden ser explotados, como la lectura de caché. Si un programa malicioso puede provocar estos efectos colaterales, se pueden llegar a obtener lecturas de elementos de caches, de otros programas, o provocar que un programa permita el acceso a zonas de memoria que de otro modo estarían protegidas.

Variantes de Spectre:

Variante 1: bounds check bypass (CVE-2017-5753):las instrucciones después de una rama condicional se ejecutan como resultado de una predicción errónea

Variante 2: branch target injection (CVE-2017-5715): las instrucciones en un lugar determinado son mal predichas.


Parches de contramedida

Si bien a dia de hoy, aún no existe solución para todos “los casos especiales de Spectre”, la vulnerabilidad está corregida, por diversos parches lanzados por parte de Intel. Estos parches si bien corrigen la vulnerabilidad, degradan la velocidad del procesador de manera significativa. Los primeros parches que solucionaron tanto Spectre como Meltdown, fueron bloqueados por Microsoft ( en sus dispositivos), por producir una gran degradación de la velocidad de la CPU y reinicios inesperados, la propia Microsoft lanzó un parche para corregir estos reinicios. Los parches actuales apenas afectan al rendimiento de las CPU. Si bien la noticia primera era que solo los procesadores Intel de últimas generaciones eran los afectados, más adelante se ha descubierto que procesadores AMD y algunos procesadores con arquitectura ARM, tambíen pueden verse afectados por la vulnerabilidad Spectre y Meltdown.


Enlaces externos