Nueva vulnerabilidad de hardware en procesadores Intel

Te explicamos de forma breve y sencilla el nuevo método avanzado de robo de datos que utiliza las funciones de las CPU modernas.

Vulnerabilidad de hardware en procesadores Intel

Un grupo de investigadores de la Universidad de Maryland en los EE. UU. y la Universidad de Tsinghua en China publicaron un artículo científico que documenta un nuevo método de ataque de canal lateral que explota una vulnerabilidad de hardware previamente desconocida en los procesadores Intel. Aunque la vulnerabilidad parece afectar a los últimos procesadores del fabricante de chips, resulta más eficaz en el ataque contra modelos más antiguos que también están expuestos a la vulnerabilidad Meltdown. Esta investigación sería puramente de interés científico de no ser por un aspecto: los atacantes roban información confidencial al cambiar los datos del registro de estado.

En castellano, por favor

Las vulnerabilidades del procesador de hardware vinculadas a la ejecución especulativa de instrucciones han sido objeto de investigación durante más de cinco años. En resumen, todos los ataques propuestos se pueden resumir de la siguiente manera: la CPU se ve obligada de alguna forma a leer datos a los que el usuario no debería tener acceso. Imagínate que el programa de los atacantes no tiene acceso a la clave de cifrado utilizada para proteger los datos confidenciales. Si le indicamos a la CPU que “lea la clave de cifrado en una dirección determinada”, esta no seguirá la instrucción. La ayuda llega (al atacante) en forma de ejecución especulativa de instrucciones, una característica importante de las CPU modernas, que existe desde hace casi tres décadas: para acelerar las cosas, en lugar de esperar a que termine una instrucción, el procesador ejecuta la siguiente en paralelo.

Si la primera instrucción comprueba los derechos de acceso a información sensible, en teoría no debería permitir la ejecución de la siguiente instrucción para leer esta información. Pero ya es demasiado tarde: la siguiente instrucción se ejecuta de forma especulativa. Ten en cuenta que aún no tenemos acceso a estos datos, pero la CPU sí. En el caso de las vulnerabilidades conocidas como Spectre, los datos se cargan temporalmente en la memoria caché de la CPU, pero así no se pueden leer. Sin embargo, sí se pueden leer a través de canales laterales; por ejemplo, ejecutando repetidamente una instrucción, cuyo tiempo de procesamiento varía según los datos en la caché. Repetir una operación de este tipo muchas (incluso miles de) veces permite a los atacantes recuperar datos simplemente observando la rapidez o lentitud con la que se ejecuta un comando aparentemente inofensivo.

Somos conscientes de que esta descripción “simple” todavía suena complicada. El nuevo artículo es aún más desconcertante, especialmente porque los autores decidieron no realizar una descripción detallada del ataque. El siguiente diagrama lo describe en su totalidad:

Descripción general del canal lateral temporal de ejecución transitoria.

Descripción general del canal lateral temporal de ejecución transitoria. Fuente.

Intentemos esclarecer el asunto. EFLAGS es un registro de bandera en el procesador Intel que realiza un seguimiento del estado operativo de la CPU. Puede almacenar el resultado de los cálculos, en particular si es igual a cero (la llamada bandera cero o ZF). Después, la magia entra en juego: imagínate que un compañero tuyo piensa en un número del 1 al 10 y le pides que no lo comparta con nadie. Continúas diciendo los números del 1 al 10 (buscando cualquier señal que pueda delatar a tu compañero), pero este no quiere compartir la respuesta correcta contigo y responde cada vez con la palabra “crisantemo”. Sin embargo, cuando pronuncias el número correcto, tarda un poco más en decir “crisantemo” en comparación con las otras veces.

Algo similar ocurre en este nuevo ataque: realizamos numerosos cálculos con datos sensibles. Todos estos cálculos se hacen de forma especulativa. El resultado se escribe en la bandera ZF (igual o no igual a cero). No podemos saber directamente el estado de esta, pero después ejecutamos una instrucción JCC bastante inútil (en concreto la instrucción JZ: “saltar si es cero”), que se ejecuta un poco más lento si acertamos. Y es este retraso en la respuesta lo que constituye la vulnerabilidad.

¿Dónde está el problema?

El aspecto más interesante de este ataque es que no funciona por sí solo. Para garantizar la ejecución especulativa de las instrucciones requeridas, los delincuentes deben explotar una vulnerabilidad más. El documento que estamos analizando utiliza la vulnerabilidad Meltdown, descubierta en el 2018, que brinda acceso a información que está fuera del alcance de los intrusos. Como resultado, los datos confidenciales se leyeron con un 100 % de eficiencia en todas las CPU antiguas afectadas por esta vulnerabilidad (el estudio utilizó Intel Core i7 de sexta y séptima generación). Aunque el experimento falló en las CPU de décima generación, también experimentan cierto retraso a la hora de ejecutar una instrucción determinada del conjunto JCC.

En realidad, los tipos de ataques aún más versátiles como Spectre, que roban información de la memoria caché de la CPU, tienen una aplicación bastante restringida. Pero al menos en su caso, resultaba obvio la necesidad de respuesta: la probabilidad de un ataque avanzado dirigido a datos críticos era distinta de cero. En cuanto al nuevo artículo, estamos lidiando más con la idea de que, si funciona, se aplica a los procesadores Intel más antiguos.

Pero la noticia en sí es significativa: existe un nuevo mecanismo de canal lateral para extraer datos utilizando el registro de estado de la bandera. No se puede descartar que en el futuro esta estrategia, combinada con alguna otra vulnerabilidad, también afecte a las nuevas CPU. O tal vez todo se resuelva antes de que veamos un nuevo ataque: después de todo, la dependencia del tiempo de ejecución de la instrucción en los datos es un problema bastante serio. Existe toda una subdisciplina de la criptografía que se ocupa de la protección de los algoritmos de cifrado contra los ataques temporales.

En cualquier caso, la investigación con toda la información sobre las CPU modernas sigue en curso. Por fortuna, ejecutar ataques contra vulnerabilidades de hardware resulta tan difícil como comprenderlas. Y, aunque todavía no hemos visto nada que pueda aplicarse a gran escala, sería prudente que los responsables de la seguridad de la información de las empresas que manejan datos altamente confidenciales tuvieran en cuenta estas amenazas y que, como mínimo, monitorizaran su evolución.

Consejos