Investigadores de la Universidad Tsinghua, la Universidad de Maryland y un laboratorio informático de la China Ministry of Education han descubierto un nuevo ataque de canal lateral que afecta a varias generaciones de procesadores Intel, permitiendo la fuga de datos a través del registro EFLAGS. Este nuevo ataque es diferente a otros ataques de canal lateral, ya que en lugar de basarse en el sistema de caché, aprovecha una falla en la ejecución transitoria para extraer datos secretos del espacio de memoria del usuario a través del análisis temporal. |
El ataque funciona como un canal lateral para Meltdown, una vulnerabilidad de seguridad crítica descubierta en 2018 que afecta a muchos microprocesadores basados en x86. Meltdown explota una característica de optimización de rendimiento llamada "ejecución especulativa" para permitir que los atacantes eviten los mecanismos de aislamiento de memoria y accedan a secretos almacenados en la memoria del kernel, como contraseñas, claves de cifrado y otros datos privados.
Meltdown ha sido en gran parte mitigado a través de parches de software, actualizaciones de microcódigo y redes de hardware, pero ninguna solución ha abordado el problema al 100%, y el último método de ataque puede funcionar incluso en sistemas completamente parcheados, dependiendo de la configuración de hardware, software y parches.
El nuevo ataque de canal lateral presentado en un documento técnico publicado en Arxiv.org describe una falla en el cambio del registro EFLAGS en la ejecución transitoria, afectando el tiempo de las instrucciones JCC (saltar sobre la condición del código).
El registro EFLAGS es un registro de la CPU que contiene varios indicadores relacionados con el estado del procesador, mientras que la instrucción JCC es una instrucción de la CPU que permite el salto condicional basado en el contenido del registro EFLAGS.
Panorama de los ataques (arxiv.org)
El ataque se lleva a cabo en dos fases: la primera es activar la ejecución transitoria y codificar los datos secretos a través del registro EFLAGS, y la segunda es medir el tiempo de ejecución de la instrucción KCC para decodificar los datos.
Pseudocódigo para cronometrar el ataque de ejecución transitoria (arxiv.org)
Los datos experimentales mostraron que el ataque logró recuperar el 100% de los datos para los procesadores Intel i7-6700 e Intel i7-7700 y tuvo cierto éxito contra el nuevo procesador Intel i9-10980XE. El experimento se realizó en Ubuntu 22.04 con la versión del kernel de Linux 5.15.0.
Sin embargo, los investigadores señalan que este ataque de tiempo no es tan confiable como los métodos de canal lateral de estado de caché, y para obtener mejores resultados en los chips más recientes, el ataque tendría que repetirse miles de veces.
Aunque los investigadores admiten que las causas raíz del ataque siguen siendo esquivas, proponen algunas mitigaciones no triviales, como cambiar la implementación de la instrucción JCC para hacer que la medición de ejecución adversaria sea imposible bajo cualquier condición, o reescribir el EFLAGS después de la ejecución transitoria para reducir su influencia sobre la instrucción JCC.