Nuevo ataque a estructuras microarquitectónicas de procesadores Intel y AMD

Un grupo de investigadores de la Universidad de Virginia y la Universidad de California presentó un nuevo tipo de ataque a las estructuras microarquitectónicas de los procesadores Intel y AMD, identificado durante la ingeniería inversa de capacidades de CPU no documentadas. El método de ataque propuesto implica el uso de un caché microoperativo intermedio en los procesadores, que puede usarse para recuperar información acumulada durante la ejecución especulativa de instrucciones.

Para fines de optimización, el procesador comienza a ejecutar algunas instrucciones en modo especulativo, sin esperar a que se completen los cálculos anteriores, y si luego determina que la predicción no estaba justificada, revierte la operación a su estado original, pero los datos procesados ​​durante La ejecución especulativa se deposita en un caché, cuyo contenido se puede determinar.

Cabe señalar que el nuevo método supera significativamente el ataque Spectre v1, hace que el ataque sea difícil de detectar y no es bloqueado por los métodos existentes de protección contra ataques de canal lateral diseñados para bloquear vulnerabilidades causadas por la ejecución especulativa de instrucciones (por ejemplo, el uso de la instrucción LFENCE bloquea las fugas en las últimas etapas de la ejecución especulativa, pero no protege contra las fugas a través de estructuras microarquitectónicas).

El método afecta a los modelos de procesadores Intel y AMD lanzados desde 2011, incluidas las series Intel Skylake y AMD Zen. Las CPU modernas dividen las instrucciones complejas del procesador en microoperaciones más simples similares a RISC, que se almacenan en una memoria caché separada. Este caché es fundamentalmente diferente de los cachés de nivel superior, no es accesible directamente y actúa como un búfer de flujo para un acceso rápido a los resultados de la decodificación de instrucciones CISC en microinstrucciones RISC. Sin embargo, los investigadores han encontrado una manera de crear condiciones que surgen cuando el acceso a la caché entra en conflicto y permiten juzgar el contenido de la caché de microoperaciones analizando las diferencias en el tiempo de ejecución de ciertas acciones.

Nuevo ataque a estructuras microarquitectónicas de procesadores Intel y AMD

El caché de microoperaciones en los procesadores Intel está segmentado en relación con los subprocesos de la CPU (Hyper-Threading), mientras que los procesadores AMD Zen utilizan un caché compartido, lo que crea condiciones para la fuga de datos no solo dentro de un subproceso de ejecución, sino también entre diferentes subprocesos en SMT. (posible fuga de datos entre el código que se ejecuta en diferentes núcleos lógicos de CPU).

Los investigadores han propuesto un método básico para detectar cambios en el caché de microoperaciones y varios escenarios de ataque que permiten crear canales de transmisión de datos ocultos y utilizar código vulnerable para filtrar datos confidenciales, tanto dentro de un solo proceso (por ejemplo, para filtrar datos del proceso al ejecutar código de terceros en motores con JIT y en máquinas virtuales), y entre el kernel y los procesos en el espacio de usuario.

Al organizar una variante del ataque Spectre utilizando un caché de microoperaciones, los investigadores lograron un rendimiento de 965.59 Kbps con una tasa de error del 0.22% y 785.56 Kbps cuando utilizaron la corrección de errores, en el caso de organizar una fuga dentro de la misma dirección. nivel de espacio y privilegios. Con una fuga que abarca diferentes niveles de privilegios (entre el kernel y el espacio de usuario), el rendimiento fue de 85.2 Kbps con corrección de errores agregada y de 110.96 Kbps con una tasa de error del 4%. Al atacar a los procesadores AMD Zen, creando una fuga entre diferentes núcleos lógicos de CPU, el rendimiento fue de 250 Kbps con una tasa de error del 5.59% y 168.58 Kbps con corrección de errores. En comparación con el método clásico Spectre v1, el nuevo ataque fue 2.6 veces más rápido.

Se espera que la protección contra un ataque de caché de microoperaciones requiera cambios que reduzcan el rendimiento más que si habilitara la protección contra ataques de Spectre. Como compromiso óptimo, se propone bloquear dichos ataques no desactivando el almacenamiento en caché, sino a nivel de monitoreo de anomalías e identificando los estados de caché que son típicos de los ataques.

Al igual que en los ataques de Spectre, organizar una fuga del kernel u otros procesos requiere la ejecución de una determinada secuencia de comandos (gadgets) por parte de los procesos de la víctima, lo que lleva a la ejecución especulativa de instrucciones. Se han encontrado alrededor de 100 dispositivos similares en el kernel de Linux, que se eliminarán, pero periódicamente se encuentran soluciones alternativas para su generación, por ejemplo, relacionadas con la ejecución de programas BPF especialmente diseñados en el kernel.

Fuente: opennet.ru

Añadir un comentario