Intel SGX y MSR: ¿qué deben saber los desarrolladores?

9

Intel SGX es una tecnología nueva e intrigante que se enviará como parte de los próximos procesadores Intel. Está diseñado para permitir la ejecución Software en un enclave seguro. El hardware que se ejecute en el enclave se aislará del código no confiable que se ejecuta en el mismo procesador, por lo que puede ejecutar un código crítico para la seguridad en el enclave y protegerlo de ataques. Si bien SGX no es compatible con los procesadores actualmente disponibles, Intel sugiere que estará disponible pronto. La esperanza es que esto pueda proporcionar una base sólida para ciertos tipos de aislamiento: los desarrolladores podrán ejecutar cierto código (por ejemplo, código de administración de claves criptográficas) en un enclave seguro, con garantías de que otro código no podrá manipularlo. it.

Un registro específico del modelo (MSR) es un registro de configuración especial que controla el funcionamiento del procesador. Por ejemplo, los MSR se pueden usar para habilitar el rastreo de sucursales, contadores de rendimiento, puntos de observación de hardware y otras características especiales útiles. Normalmente, solo el código privilegiado puede leer y escribir la mayoría de los MSR.

Mi pregunta: ¿Cómo interactúa el modo SGX con los MSR? ¿Qué necesitan saber los desarrolladores de código que se ejecuta en modo SGX acerca de los MSR?

La especificación SGX no dice cómo el modo SGX interactúa con los MSR. Sin embargo, podría imaginar que los MSR podrían suponer un riesgo para el código que se ejecuta en un enclave, dependiendo de cómo interactúan los dos. Por ejemplo, si el código que no es de confianza podría habilitar el rastreo de sucursales (a través de un MSR) y luego desencadenar la invocación de un enclave seguro, y si esta configuración se mantuvo a través del interruptor de modo, todas las ramas tomadas por el código del enclave se registrarán en la memoria accesible por no confiable código, entonces esto podría permitir que un código no confiable monte ataques de canal lateral potentes contra el código del enclave.

Entonces, ¿cómo afectan los valores del MSR a la ejecución del código que se ejecuta en un enclave? ¿Se ignoran los MSR cuando se ejecutan en modo enclave? ¿El código diseñado para ejecutarse en un enclave necesita borrar / restablecer todos los MSR antes de hacer algo sensible? ¿Qué necesitan saber los desarrolladores de código que se ejecutarán en un enclave sobre cómo funcionan los MSR en modo SGX, para escribir código seguro y proteger su código de ataques?

    
pregunta D.W. 19.02.2015 - 01:46
fuente

1 respuesta

7

¡Esta es una gran pregunta! Nunca pensé en esto hasta que lo pediste. En primer lugar, el código que se ejecuta dentro de un enclave seguro se ejecuta en el anillo 3. Por lo tanto, se aplican todas las restricciones que se aplican al código no confiable del anillo 3 del enclave. Así que un enclave no puede escribir a MSR's.

A continuación, las especificaciones no mencionan explícitamente nada acerca de los MSR, pero sí le informan sobre la interacción con las características de IA32. Para ver el ejemplo del rastreo de sucursales, consulte la sección LBR (último registro de sucursales). Esto te dice exactamente cómo interactúa. Según tengo entendido, las instrucciones EENTER / EXIT se ven como una rama larga cada una hasta el punto de entrada dentro del enclave. Cualquier cosa que ocurra después de saltar al código dentro del enclave no se registra ni es visible para el código no confiable sin importar el privilegio, ya que los registros de derivación se extraen de la pila de LBR al salir del enclave. Solo se puede ver en una entrada de depuración, que puede ser establecida por el desarrollador del enclave y, como su nombre lo indica claramente, el enclave está en modo de depuración (consulte el capítulo 7, sección 5, sobre el rastreo de bifurcaciones). De lo que hablas no debería ser posible.

Los ataques de canal lateral de rastreo de ramificación pueden no ser un problema, pero otros tipos de monitoreo de rendimiento pueden ser un problema. Los fallos de página, accesos de memoria, comportamiento de caché, etc. todavía pueden ser monitoreados. Los ataques de canal lateral basados en caché también son posibles. Así que sí, los ataques de canal lateral son posibles contra el código del enclave. El Haven paper de Microsoft explica el tipo de limitaciones que SGX aún tiene en términos de canal lateral los ataques.

Y para responder a su pregunta, lo que un desarrollador de enclave necesita saber sobre MSR depende de qué tipo de ataques espera el desarrollador en su código. Supongo que habrá algún tipo de modelado de amenazas al diseñar y desarrollar el enclave y, en función de las amenazas que esperas, debes descubrir cómo SGX trata estas amenazas. El enlace del canal del lado de la rama es un ejemplo de cómo se trata SGX.

En su mayor parte, espero que cualquier estado de MSR / registro / procesador que pueda filtrar información sobre el enclave y su ejecución esté oculto / protegido de código no confiable, con privilegios o sin privilegios, y un escritor de enclave no tenga que preocuparse por eso.

    
respondido por el Raghu 19.02.2015 - 14:57
fuente

Lea otras preguntas en las etiquetas