Las CPUs Intel son vulnerables a un nuevo ataque de canal lateral
Investigadores han descubierto un nuevo ataque de canal lateral que afecta a varias generaciones de CPUs Intel, lo que permite filtrar datos a través del registro EFLAGS.
El nuevo ataque fue descubierto por investigadores de la Universidad de Tsinghua, la Universidad de Maryland y un laboratorio de computación (BUPT) administrado por el Ministerio de Educación de China y es diferente a la mayoría de los otros ataques de canal lateral.
En lugar de confiar en el sistema de caché como muchos otros ataques de canal lateral, este nuevo ataque aprovecha una vulnerabilidad en la ejecución transitoria. En otras palabras, esto hace posible extraer datos secretos del espacio de la memoria del usuario a través del análisis de tiempo.
El ataque funciona como un canal secundario para Meltdown, una vulnerabilidad de seguridad crítica descubierta en 2018, que afecta a muchos microprocesadores basados en x86.
Meltdown explota una función de optimización del rendimiento llamada “ejecución especulativa” para permitir a los atacantes eludir los mecanismos de aislamiento de la memoria. Esto para acceder a los secretos almacenados en la memoria del núcleo, como contraseñas, claves de cifrado y otros datos privados.
Meltdown se ha mitigado en gran medida mediante parches de software, actualizaciones de microcódigos y rediseños de hardware. Sin embargo, ninguna solución ha abordado el problema al 100%, y el método de ataque más reciente podría funcionar incluso en sistemas con parches completos. Esto según las configuraciones de hardware, software y parches.
Ataque de temporización de ejecución transitoria
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 ejecución transitoria, que afecta el tiempo de las instrucciones JCC (jump on condition code).
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 la bifurcación condicional basada en el contenido del registro EFLAGS.
El ataque se lleva a cabo en dos fases, la primera es activar la ejecución transitoria y codificar 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.
Los datos experimentales mostraron que el ataque logró el 100 % de recuperación de datos (fuga) para Intel i7-6700 e Intel i7-7700 y tuvo cierto éxito contra la nueva CPU Intel i9-10980XE. El experimento se realizó en Ubuntu 22.04 jammy con kernel de Linux versión 5.15.0.
Sin embargo, los investigadores señalan que este ataque de sincronización no es tan confiable como los métodos de canal lateral de estado de caché. Asimismo, para obtener mejores resultados en chips recientes, el ataque tendría que repetirse miles de veces.
Mitigaciones
Los investigadores admiten que las causas fundamentales del ataque siguen siendo esquivas y plantean la hipótesis de que hay un búfer en la unidad de ejecución de la CPU de Intel. Este necesita tiempo para revertirse si se debe retirar la ejecución, un proceso que provoca un bloqueo si la instrucción subsiguiente depende en el objetivo del búfer.
Sin embargo, aún proponen algunas mitigaciones no triviales, como cambiar la implementación de la instrucción JCC para hacer imposible la medición de la ejecución contradictoria bajo cualquier condición, o reescribir el EFLAGS después de la ejecución transitoria para reducir su influencia sobre la instrucción JCC.