¿Cuáles son las implicaciones de seguridad de habilitar el acceso a los contadores de rendimiento en ARM Cortex A9?

3

En un núcleo ARM Cortex A9, se deben ejecutar instrucciones privilegiadas para que el código sin privilegios pueda usar contadores de rendimiento. Por ejemplo, con este código en línea GCC, que debería ejecutarse en un núcleo:

/* Allow access to perf counter */
__asm__ __volatile__ ("\tMCR p15, 0, %0, C9, C14, 0\n" :: "r" (1));

/* Turn off counter overflow interrupts */
__asm__ __volatile__ ("\tMCR p15, 0, %0, C9, C14, 2\n" :: "r" (0x8000000f));

Si el acceso no está habilitado, los programas de usuario que intentan acceder al contador de ciclos reciben una excepción de "instrucción ilegal" y, por supuesto, los programas de usuario no pueden ejecutar la secuencia de habilitación.

Mi pregunta es, ¿existe alguna razón de seguridad para proteger los contadores?

Todo lo que puedo pensar es que en un entorno de tipo informático confiable, un código sin privilegios podría obtener información de tiempo muy precisa sobre las llamadas a algún código sensible a la seguridad.

Quiero obtener toda la información que pueda antes de agregar dicho código al código de inicio de un núcleo que los clientes integrarán en los productos finales que tienen estrictos requisitos de seguridad.

    
pregunta Kaz 16.04.2013 - 02:06
fuente

1 respuesta

4

La información de tiempo muy precisa es muy útil cuando se realizan ataques de canal lateral . Algunos ejemplos famosos (en condiciones de laboratorio) incluyen el robo de una clave de cifrado utilizada por algún otro proceso, en datos que no vemos (ni texto claro ni texto cifrado). Esto puede funcionar en la detección de fallos en la memoria caché L1, o en la predicción de salto (error) en la CPU. Prohibir el acceso al contador de ciclos hará que tales ataques sean más difíciles (no imposibles, sino más difíciles).

Si no tiene procesos concurrentes potencialmente hostiles entre sí, ejecutándose en la misma CPU (un escenario que incluye el caso de dos máquinas virtuales distintas que comparten el mismo hardware), entonces hay pocas razones para desactivar el contador de ciclos .

    
respondido por el Tom Leek 16.04.2013 - 03:49
fuente

Lea otras preguntas en las etiquetas