¿Qué es la vulnerabilidad de seguridad de Spectre?
Spectre es una vulnerabilidad de seguridad que afecta a todos los procesadores modernos que utilizan mecanismos como la predicción de saltos y la acción especulativa.
Los ataques Specter implican inducir a una víctima a realizar operaciones especulativas que no ocurrirían durante la ejecución correcta del programa y que filtran la información confidencial de la víctima a través de un canal lateral al adversario. Esto también expone espacio de memoria protegido de otro modo, lo que permite que el agente malicioso acceda a los datos o incluso los modifique. Fue descubierto al mismo tiempo que Meltdown Vulnerability .
¿Qué son los mecanismos de Predicción de Sucursales y Acción Especulativa?
- Predicción de bifurcación: la técnica de predicción de bifurcación permite que el procesador acelere la ejecución en un procesador canalizado al convertir instrucciones en lógica de predicado. Por lo tanto, solo se ejecutan aquellas instrucciones cuyo predicado es verdadero. Esto permite que la CPU evite verificar cada rama para su ejecución.
- Ejecución especulativa: la ejecución especulativa, junto con la predicción de bifurcaciones, es un componente de la ejecución desordenada que se utiliza para acelerar la ejecución en microprocesadores basados en canalizaciones. Aprendimos de la definición anterior que la predicción de bifurcación se usa para determinar qué instrucción se ejecutará en caso de un salto condicional. La acción especulativa va un paso más allá. Determina cuál sería el resultado de ejecutar la(s) siguiente(s) instrucción(es). Si la predicción de la bifurcación fue correcta, se utiliza el resultado; de lo contrario, se descarta.
¿Cómo funciona Spectre Vulnerability?
Hay dos formas en las que funciona Spectre Vulnerability:
1. Explotación local:
En este caso, el agente malicioso reside en el propio ordenador. Los siguientes son los pasos que se dan:
- Manipula el proceso para ejecutar una instrucción que nunca se habría ejecutado normalmente.
- Cuando la CPU evalúa la instrucción ejecutada, descarta el cálculo.
- Sin embargo, el tamaño ampliado de la memoria caché no se restaura.
- Simplemente mirando hacia arriba en el caché, se pueden deducir los contenidos que estaban allí y su ubicación real en la memoria, exponiéndolos así al programa malicioso.
2. Explotación Remota:
En este caso, el agente malicioso trabaja a través de Javascript. El malware con secuencias de comandos obtiene acceso a toda la memoria asignada con el navegador. Se toman los siguientes pasos:
- Se fuerza el vaciado de la memoria caché al realizar lecturas incrementales en grandes conjuntos de datos porque las memorias de array en javascript se mantienen mediante la política LRU.
- Entonces, el predictor de bifurcación estaría mal entrenado al iterar sobre un conjunto de datos muy grande usando operaciones bit a bit para establecer el índice en valores dentro del rango y luego usando una dirección fuera de los límites para la iteración final.
- Al iterar sobre un gran conjunto de datos usando operaciones bit a bit para establecer valores dentro del rango y usando direcciones fuera de los límites para la iteración final, el predictor de bifurcación puede estar mal entrenado
- Las lecturas programadas permiten que el script lea la ubicación
¿Qué medidas de mitigación se están tomando?
El descubrimiento de este problema de seguridad lleva al desarrollo de muchas medidas de prevención y mitigación. Diferentes proveedores de procesadores y software abordaron el problema de manera diferente de las siguientes maneras:
- En marzo de 2018, Intel desarrolló correcciones de hardware para Spectre. Las vulnerabilidades fueron mitigadas por un nuevo sistema de partición que mejora el proceso y la separación del nivel de privilegios.
- Microsoft actuó aislando el Kernel y las tablas de páginas de usuario. También ha diseñado nuevas instrucciones de CPU (compatibles con Windows) que eliminan la especulación de ramas.
- Chrome 64 incluye mitigación contra el ataque por defecto. Los usuarios de Chrome 63 pueden mitigar manualmente el ataque habilitando la función de aislamiento del sitio (chrome://flags#enable-site-per-process)
- Google creó una nueva técnica llamada ‘Retpoline’ que implica la dirección a nivel de compilador de ramas indirectas hacia un objetivo diferente que no da como resultado una ejecución especulativa fuera de orden vulnerable.
- Mozilla está reduciendo la resolución de los temporizadores de JavaScript para ayudar a prevenir ataques de tiempo, con trabajo adicional en técnicas de fuzzing de tiempo planificadas para futuras versiones.
Sin embargo, cabe señalar que la introducción de parches de software ha provocado importantes problemas de rendimiento, especialmente en equipos antiguos. Además, se han informado reinicios no deseados incluso para los chips Intel más nuevos.
Referencias:
https://en.wikipedia.org/wiki/Spectre_(security_vulnerability)