LVI es una nueva clase de ataques al mecanismo de ejecución especulativa en la CPU

Publicado información sobre una nueva clase de ataques HVAC (Inyección de valor de carga, CVE-2020-0551) sobre el mecanismo de ejecución especulativa en las CPU Intel, que puede usarse para filtrar claves y datos secretos de enclaves Intel SGX y otros procesos.

Una nueva clase de ataques se basa en la manipulación de las mismas estructuras microarquitectónicas utilizadas en los ataques. MDS (Muestreo de datos microarquitectónicos), Espectro y fusión. Al mismo tiempo, los métodos de protección existentes contra Meltdown, Spectre, MDS y otros ataques similares no bloquean los nuevos ataques. La protección LVI eficaz requiere cambios de hardware en la CPU. Cuando se organiza la protección mediante programación, al agregar la instrucción LFENCE por parte del compilador después de cada operación de carga desde la memoria y reemplazar la instrucción RET con POP, LFENCE y JMP, se registra demasiada sobrecarga; según los investigadores, la protección completa del software conducirá a una disminución en rendimiento entre 2 y 19 veces.

Parte de la dificultad para bloquear el problema se compensa con el hecho de que el ataque es actualmente más teórico que práctico (el ataque es teóricamente posible, pero muy difícil de implementar y sólo reproducible en pruebas sintéticas).
Intel apropiado el problema tiene un nivel de peligrosidad moderado (5.6 sobre 10) y lanzado actualizando el firmware y el SDK para el entorno SGX, en el que intentó bloquear el ataque mediante una solución alternativa. Los métodos de ataque propuestos actualmente sólo son aplicables a los procesadores Intel, pero no se puede descartar la posibilidad de adaptar LVI para otros procesadores a los que se puedan aplicar ataques de clase Meltdown.

El problema fue identificado el pasado mes de abril por el investigador Jo Van Bulck de la Universidad de Lovaina, tras lo cual, con la participación de 9 investigadores de otras universidades, se desarrollaron cinco métodos de ataque básicos, cada uno de los cuales permite la existencia de ataques más específicos. Opciones. De forma independiente, en febrero de este año, los investigadores de Bitdefender también he descubierto una de las variantes del ataque LVI y lo informó a Intel. Las variantes de ataque se distinguen por el uso de diferentes estructuras de microarquitectura, como el búfer de almacenamiento (SB, Store Buffer), el búfer de relleno (LFB, Line Fill Buffer), el búfer de cambio de contexto FPU y el caché de primer nivel (L1D), utilizados anteriormente. en ataques como ZombieLoad, RIDL, Fallout, LazyFP, Foreshadow и Fusión de un reactor.

LVI es una nueva clase de ataques al mecanismo de ejecución especulativa en la CPU

El principal honores El LVI contra los ataques MDS es que MDS manipula la determinación del contenido de las estructuras microarquitectónicas que permanecen en la caché después del manejo especulativo de fallas o de las operaciones de carga y almacenamiento, mientras que
Los ataques LVI permiten que los datos del atacante se inserten en estructuras de microarquitectura para influir en la posterior ejecución especulativa del código de la víctima. Utilizando estas manipulaciones, un atacante puede extraer el contenido de estructuras de datos privadas en otros procesos al ejecutar cierto código en el núcleo de la CPU de destino.

LVI es una nueva clase de ataques al mecanismo de ejecución especulativa en la CPU

para problema de explotación en el código del proceso víctima debe reunirse Secuencias especiales de código (gadgets) en las que se carga un valor controlado por el atacante, y cargar este valor provoca que se generen excepciones (fallo, aborto o asistencia), descartando el resultado y volviendo a ejecutar la instrucción. Cuando se procesa una excepción, aparece una ventana especulativa durante la cual se filtran los datos procesados ​​en el gadget. En particular, el procesador comienza a ejecutar un fragmento de código (gadget) en modo especulativo, luego determina que la predicción no estaba justificada y revierte las operaciones a su estado original, pero los datos procesados ​​durante la ejecución especulativa se depositan en la caché L1D. y buffers de microarquitectura y está disponible para su recuperación desde ellos utilizando métodos conocidos para determinar datos residuales a través de canales de terceros.

La excepción de "asistencia", a diferencia de la excepción de "fallo", la maneja internamente el procesador sin llamar a los controladores de software. La asistencia puede ocurrir, por ejemplo, cuando es necesario actualizar el bit A (Accedido) o D (Sucio) en la tabla de páginas de memoria. La principal dificultad al llevar a cabo un ataque a otros procesos es cómo iniciar la asistencia manipulando el proceso de la víctima. Actualmente no existen métodos fiables para hacerlo, pero es posible que se encuentren en el futuro. La posibilidad de llevar a cabo un ataque hasta el momento ha sido confirmada sólo para los enclaves Intel SGX, otros escenarios son teóricos o reproducibles en condiciones sintéticas (requiere agregar ciertos gadgets al código)

LVI es una nueva clase de ataques al mecanismo de ejecución especulativa en la CPU

LVI es una nueva clase de ataques al mecanismo de ejecución especulativa en la CPU

Posibles vectores de ataque:

  • Fuga de datos de las estructuras del kernel al proceso a nivel de usuario. La protección del kernel de Linux contra los ataques Spectre 1, así como el mecanismo de protección SMAP (Prevención de acceso en modo supervisor), reducen significativamente la probabilidad de un ataque LVI. Puede ser necesario agregar protección adicional al kernel si en el futuro se identifican métodos de ataque LVI más simples.
  • Fuga de datos entre diferentes procesos. El ataque requiere la presencia de ciertos fragmentos de código en la aplicación y la definición de un método para generar una excepción en el proceso de destino.
  • Fuga de datos del entorno anfitrión al sistema invitado. El ataque se clasifica como demasiado complejo y requiere varios pasos difíciles de implementar y predicciones de actividad en el sistema.
  • Fuga de datos entre procesos en diferentes sistemas invitados. El vector de ataque está cerca de organizar la fuga de datos entre diferentes procesos, pero además requiere manipulaciones complejas para evitar el aislamiento entre sistemas invitados.

Publicado por investigadores varios prototipos con una demostración de los principios de realización de un ataque, pero aún no son aptos para realizar ataques reales. El primer ejemplo le permite redirigir la ejecución de código especulativo en el proceso de la víctima, similar a la programación orientada al retorno (ROP,Programación orientada al retorno). En este ejemplo, la víctima es un proceso especialmente preparado que contiene los gadgets necesarios (es difícil aplicar un ataque a procesos reales de terceros). El segundo ejemplo nos permite interferir con los cálculos durante el cifrado AES dentro del enclave Intel SGX y organizar una fuga de datos durante la ejecución especulativa de instrucciones para restaurar el valor de la clave utilizada para el cifrado.


Fuente: opennet.ru

Añadir un comentario