Detectaron una vulnerabilidad en los procesadores Intel que conduce a la fuga de datos
Un grupo de investigadores de universidades de china y estados unidos han identificado una nueva vulnerabilidad en los procesadores de Intel que conduce a la fuga de información sobre el resultado de operaciones especulativas a través de canales de terceros, que puede utilizarse, por ejemplo, para organizar un canal de comunicación oculto entre procesos o detectar fugas durante ataques Meltdown.
La esencia de la vulnerabilidad es un cambio en el registro del procesador EFLAGS, que ocurrió como resultado de la ejecución especulativa de instrucciones, afecta el tiempo de ejecución posterior de las instrucciones JCC (salto cuando se cumplen las condiciones especificadas).
Las operaciones especulativas no se completan y el resultado se descarta, pero el cambio de EFLAGS descartado se puede determinar analizando el tiempo de ejecución de las instrucciones JCC. Las operaciones de comparación previas al salto realizadas especulativamente, si la comparación es exitosa, dan como resultado un pequeño retraso que se puede medir y usar como una caracterÃstica para hacer coincidir el contenido.
El ataque de ejecución transitoria es un tipo de ataque aprovechando la vulnerabilidad de las tecnologÃas de optimización de CPU. Los nuevos ataques surgen rápidamente. El canal lateral es una clave parte de los ataques de ejecución transitoria para filtrar datos.
En este trabajo, descubrimos una vulnerabilidad que cambio el registro EFLAGS en ejecución transitoria que puede tener un efecto secundario en la instrucción Jcc (código de condición de salto) CPUs Intel. Basándonos en nuestro descubrimiento, proponemos un nuevo ataque de canal lateral que aprovecha el momento de la ejecución transitoria e instrucciones Jcc para entregar datos.
Este ataque codifica datos secretos al cambio de registro que hace que el tiempo de ejecución que hace ligeramente más lento y que puede ser medido por el atacante para decodificar datos. Este ataque no depende del sistema de caché.
A diferencia de otros ataques similares a través de canales de terceros, el nuevo método no analiza el cambio en el tiempo de acceso a los datos en caché y no en caché y no requiere la etapa de restablecer el registro EFLAGS al estado inicial, lo que dificulta detectar y bloquear el ataque.
A modo de demostración, los investigadores implementaron una variante del ataque Meltdown, utilizando en él un nuevo método para obtener información sobre el resultado de una operación especulativa. El funcionamiento del método para organizar la fuga de información durante un ataque Meltdown se ha demostrado con éxito en sistemas con CPU Intel Core i7-6700 e i7-7700 en un entorno con kernel Ubuntu 22.04 y Linux 5.15. En un sistema con una CPU Intel i9-10980XE, el ataque solo tuvo un éxito parcial.
La vulnerabilidad Meltdown se basa en que durante la ejecución especulativa de instrucciones, el procesador puede acceder a un área de datos privados y luego descartar el resultado, ya que los privilegios establecidos prohÃben dicho acceso desde el proceso del usuario.
En un programa, un bloque ejecutado especulativamente se separa del código principal mediante un salto condicional, que en condiciones reales siempre se activa, pero debido al hecho de que la instrucción condicional utiliza un valor calculado que el procesador no conoce durante el código preventivo. ejecución, todas las opciones de bifurcación se ejecutan especulativamente.
En la versión clásica de Meltdown, dado que se usa el mismo caché para operaciones ejecutadas especulativamente que para instrucciones normalmente ejecutadas, es posible durante la ejecución especulativa establecer marcadores en el caché que reflejen el contenido de bits individuales en un área de memoria cerrada, y luego en el código normalmente ejecutado para determinar su significado a través del análisis del tiempo de acceso a los datos en caché y no en caché.
La nueva variante utiliza el cambio en el registro EFLAGS como marcador de una fuga. En la demostración de Covert Channel, un proceso moduló los datos que se enviaban para cambiar el contenido del registro EFLAGS y otro proceso analizó el cambio en el tiempo de ejecución de JCC para recrear los datos enviados por el primer proceso.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.