La compañía AMD ha revelado información sobre una nueva clase de ataques de microarquitectura a sus procesadores: TSA (Transitional Scheduler Attack). Este ataque permite a un atacante eludir los mecanismos de aislamiento de la CPU y determinar datos procesados en otros contextos, por ejemplo, obtener información del espacio del usuario a nivel del núcleo o, desde un sistema anfitrión, acceder a datos utilizados en otro sistema anfitrión.
Las vulnerabilidades fueron identificadas durante el desarrollo de un conjunto de herramientas creado por investigadores de Microsoft y la Escuela Politécnica Federal de Zúrich para realizar pruebas de estrés en el aislamiento microarquitectónico entre diferentes zonas de control de acceso, como el núcleo, las máquinas virtuales y los procesos.
El método de ataque se basa en la dependencia del tiempo de ejecución de ciertas instrucciones del estado de las estructuras microarquitectónicas. Cuando el procesador espera finalizar rápidamente una instrucción de lectura de datos desde la memoria (suponiendo que los datos están en la caché L1), pero no logra recuperar los datos con éxito, se genera un estado de 'finalización falsa' (false completion). En este momento, el procesador puede planificar especulativamente la ejecución de otras operaciones que dependen del resultado de la carga de memoria incluso antes de reconocer este estado.
Dado que la carga no se ha completado, los datos asociados se consideran inválidos por el procesador, y la operación de carga se repite más tarde. Las operaciones dependientes también se reejecutan después de que los datos correctos estén disponibles. En este caso, no se realiza un vacío del pipeline después de ejecutar la instrucción para la que se ha registrado el estado de 'finalización falsa', lo que permite que datos incorrectos sean redirigidos a operaciones dependientes.
La ejecución de tales operaciones no cambia el estado de la caché y el TLB (Translation Lookaside Buffer), es decir, los datos no pueden recuperarse mediante métodos tradicionales de determinación del estado de la caché. Sin embargo, estos datos influyen en el tiempo de ejecución de otras instrucciones. El análisis del tiempo de ejecución puede utilizarse como fuente de fuga de información de las estructuras microarquitectónicas que persisten después de la ejecución especulativa de otras operaciones.
Dependiendo de la fuente de extracción de datos residuales, se han identificado dos vulnerabilidades:
- CVE-2024-36350 (TSA-SQ — TSA Store Queue) — fuga de un búfer de almacenamiento temporal de operaciones de escritura (Store Queue), que permite detectar el resultado de la ejecución de instrucciones de escritura en memoria.
- CVE-2024-36357 (TSA-L1 — TSA L1 Data Cache) — fuga a través de la caché L1D.
Las vulnerabilidades se manifiestan en la familia de procesadores AMD (Fam19h) basada en las microarquitecturas Zen 3 y Zen 4. Por ejemplo, el problema está presente en las series de CPU AMD Ryzen 5000/6000/7000/8000, AMD EPYC Milan/Milan-X/Genoa/Genoa-X/Bergamo/Siena, AMD Instinct MI300A, AMD Ryzen Threadripper PRO 7000 WX, AMD EPYC Embedded 7003/8004/9004/97X4, AMD Ryzen Embedded 5000/7000/V3000.
Las modificaciones necesarias para mitigar las vulnerabilidades están incluidas en la actualización de microcódigo y en los firmware de PI (Platform Initialization) de diciembre, que se han enviado a los fabricantes de OEM. Los parches para protegerse contra la vulnerabilidad se han proporcionado para su inclusión en el núcleo de Linux (para desactivar la protección, que impacta negativamente en el rendimiento, se ha previsto la opción de línea de comandos del núcleo 'tsa=off'). La corrección también se ha añadido al hipervisor Xen. Para mitigar la vulnerabilidad se requiere tanto la actualización del microcódigo como la activación del modo de protección en el nivel del núcleo o del hipervisor.
Fuente: opennet.ru
