SmashEx, un ataque a Intel SGX para extraer datos o ejecutar código

Investigadores de la Universidad de Ciencia y Tecnología de Defensa del Ejército Popular de Liberación, la Universidad Nacional de Singapur y la Escuela Técnica Superior Suiza de Zurich han desarrollado un nuevo método para atacar enclaves aislados de Intel SGX (Software Guard eXtensions).

El ataque se denominó SmashEx y fue causado por problemas de reentrada al manejar excepciones durante el trabajo de los componentes en tiempo de ejecución para Intel SGX. El método de ataque propuesto permite, si hay control sobre el sistema operativo, determinar los datos confidenciales ubicados en el enclave, u organizar la copia de su código en la memoria del enclave y su ejecución.

Recordemos que la tecnología SGX apareció en los procesadores Intel Core de sexta generación (Skylake) y ofrece una serie de instrucciones que permiten que a las aplicaciones de nivel de usuario se les asignen áreas privadas de memoria, enclaves, cuyo contenido no se puede leer ni cambiar ni siquiera mediante el kernel y el código ejecutado en los modos ring0, SMM y VMM.

Es imposible transferir el control al código en el enclave utilizando funciones de transición tradicionales y manipulaciones con registros y la pila; para transferir el control al enclave, se utilizan nuevas instrucciones creadas especialmente EENTER, EEXIT y ERESUME que realizan verificaciones de autorización. Al mismo tiempo, el código colocado en el enclave puede usar métodos de llamada clásicos para llamar a funciones dentro del enclave y una instrucción especial para llamar a funciones externas. El cifrado de memoria Enclave se utiliza para proteger contra ataques de hardware, como conectarse a un módulo DRAM.

El problema está relacionado con el hecho de que la tecnología SGX permite que el sistema operativo interrumpa la ejecución de un enclave lanzando una excepción de hardware, y las primitivas para el manejo atómico de tales excepciones no se implementan adecuadamente en los enclaves. A diferencia del kernel del sistema operativo y las aplicaciones regulares, el código dentro de los enclaves no tiene acceso a primitivas para organizar acciones atómicas durante el manejo asincrónico de excepciones. Sin las primitivas atómicas especificadas, el enclave puede interrumpirse en cualquier momento y volver a ejecutarse, incluso cuando se ejecutan secciones críticas en el enclave y se encuentra en un estado inseguro (por ejemplo, cuando los registros de la CPU no se guardan / restauran).

Para un funcionamiento normal, la tecnología SGX permite interrumpir la ejecución de un enclave con excepciones de hardware configurables. Esta característica permite que los entornos de ejecución de enclave implementen el manejo de excepciones o el manejo de señales dentro del enclave, pero también puede causar errores de reentrada . El ataque SmashEx se basa en la explotación de fallas en el SDK debido a que la situación de la llamada repetida del controlador de excepciones no se maneja adecuadamente. Es importante que para aprovechar la vulnerabilidad, el atacante debe poder interrumpir la ejecución del enclave, es decir, debe controlar el trabajo del entorno del sistema.

Después de lanzar una excepción, el atacante recibe una pequeña ventana de tiempo durante la cual es posible interceptar el flujo de ejecución mediante la manipulación de los parámetros de entrada. En particular, si tiene acceso al sistema (el entorno fuera del enclave), puede crear una nueva excepción inmediatamente después de ejecutar la instrucción para ingresar al enclave (EENTER), lo que conducirá al retorno del control al sistema en la etapa en la que aún no se ha completado la configuración de la pila para el enclave, se guarda el estado de los registros de la CPU.

Luego, el sistema puede devolver el control al enclave, pero dado que la pila del enclave no estaba configurada en el momento de la interrupción, el enclave se ejecutará con la pila que reside en la memoria del sistema, que se puede utilizar para aplicar la programación orientada al retorno (ROP ) técnicas de explotación. Programación Orientada).

Cuando se usa la técnica ROP, el atacante no intenta colocar su código en la memoria, sino que opera sobre las partes de las instrucciones de la máquina que ya están disponibles en las bibliotecas cargadas, terminando con una instrucción de retorno de control (como regla, estos son el final de la biblioteca funciones). El trabajo del exploit se reduce a construir una cadena de llamadas a bloques similares («gadgets») para obtener la funcionalidad requerida.

Los prototipos de exploits se preparan para enclaves con tiempo de ejecución basado en Intel SGX SDK (CVE-2021-0186) y Microsoft Open Enclave (CVE-2021-3376 ).

En el primer caso, se demostró la capacidad de extraer la clave RSA utilizada en el servidor web para HTTPS, y en el segundo caso, fue posible determinar el contenido recibido por la utilidad cURL que se ejecuta dentro del enclave.

La vulnerabilidad ya ha sido parcheada en software en las versiones Intel SGX SDK 2.13 y Open Enclave 0.17.1.

Fuente: https://jasonyu1996.github.io


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: AB Internet Networks 2008 SL
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.