Investigadores de la Universidad de Toronto han revelado un nuevo ataque llamado GPUThor que explota la técnica Rowhammer para provocar cambios de bits en la memoria de algunas tarjetas NVIDIA, pese a que la protección de corrección de errores ECC esté activada. Los investigadores demostraron que el ataque puede provocar una denegación de servicio y que, en un escenario específico, también puede corromper las tablas de páginas de la memoria de la GPU, lo que permitiría a un programa CUDA sin privilegios acceder a memoria arbitraria y abrir una sesión con privilegios root en el sistema anfitrión, según los resultados del artículo de investigación.
¿Qué distingue a GPUThor?
Los ataques Rowhammer se basan en acceder repetidamente a filas de memoria para aumentar la probabilidad de cambiar el estado de los bits en las filas adyacentes. Los investigadores modificaron el patrón de acceso en GPUThor para hacerlo irregular y evitar así la activación del mecanismo Target Row Refresh, o TRR, en la memoria GDDR6. Esta modificación se basó en dos comportamientos no documentados de las unidades GPU relacionados con la combinación de solicitudes de memoria y la frecuencia de activación de TRR.
El ataque se probó en tarjetas NVIDIA de la familia Ampere equipadas con memoria GDDR6: RTX A4000, RTX A4500, RTX A5000 y RTX A6000. Según los investigadores, el nuevo método produjo hasta 6,6 veces más activaciones de las filas de memoria atacadas que los enfoques anteriores y registró entre 72.000 y 377.000 cambios de bits por gigabyte con ECC desactivado. Estos resultados representan un aumento de entre 4.548 y 23.597 veces en comparación con el ataque GPUHammer anterior, acercándose a las tasas de los ataques Rowhammer más potentes contra procesadores centrales.
¿Por qué no basta con ECC?
NVIDIA utiliza el mecanismo SECDED ECC para corregir errores de un solo bit y detectar errores de dos bits dentro de los bloques de memoria supervisados. Sin embargo, los investigadores registraron, con ECC activado, aproximadamente 387 errores de dos bits, que el mecanismo puede detectar pero no corregir, además de dos errores de tres bits que, según el estudio, ECC corrigió de forma incorrecta, lo que provocó corrupción de datos.
Según las tasas de GPUThor, encontrar un cambio de bit explotable podría ser posible en aproximadamente 1,1 minutos, frente a unas 21,9 horas con GPUHammer. Este avance constituye el núcleo de la importancia de la investigación: la protección existente no elimina el riesgo cuando los errores pasan del ámbito de un solo bit a patrones de múltiples bits.
Inutilización de la tarjeta y escalada de privilegios
Los investigadores demostraron que GPUThor puede poner una tarjeta RTX A6000 equipada con ECC en estado de denegación de servicio, de modo que la tarjeta se reinicia cada dos horas y finaliza las cargas de trabajo. Tras repetir el ataque contra la misma tarjeta, esta puede acabar clasificándose como necesitada de reemplazo.
El escenario más peligroso está relacionado con la corrupción de las tablas de páginas de la GPU. Los investigadores afirman que esto podría otorgar a un programa CUDA sin privilegios la capacidad de acceder a la memoria de forma arbitraria y abrir un shell con privilegios root en el sistema anfitrión. También señalaron que la escalada de privilegios podría seguir siendo posible en tarjetas Ampere destinadas a servidores, incluida la A100, debido a su dependencia del nivel SECDED de ECC, incluso con restricciones que limitan algunos efectos de la denegación de servicio.
¿Qué cambia en la práctica?
Los investigadores notificaron los resultados a NVIDIA el 29 de abril, y la empresa publicó el 21 de agosto unas directrices para mitigar el riesgo. NVIDIA recomienda activar SYS-ECC y aislar IOMMU/DMA, supervisar los datos de errores de la GPU y restringir o controlar la ejecución de cargas de trabajo no fiables. Según la empresa, la susceptibilidad también varía en función del tipo de DRAM, la tecnología de memoria, el diseño de la plataforma, los mecanismos de protección dentro de la memoria y la configuración del sistema.
No se observaron cambios de bits en las mismas pruebas con unidades GDDR6X o HBM2e, pero los investigadores advierten de que las unidades HBM3/e y GDDR7 con ECC en el propio encapsulado también podrían estar expuestas si fuera posible generar cambios de múltiples bits. El estudio recomienda evitar, siempre que sea posible, compartir la GPU entre inquilinos, supervisar los contadores de errores ECC y restringir las cargas de trabajo CUDA no fiables. Según los investigadores, la protección completa sigue dependiendo del desarrollo de un ECC más sólido frente a errores de múltiples bits y de defensas de hardware adicionales.