En noviembre de 2023, se identificó una vulnerabilidad significativa en las unidades de procesamiento gráfico (GPU) Arm Mali, afectando específicamente a los modelos Pixel 7 y Pixel 8 de Google. Catalogada como CVE-2023-6241, esta vulnerabilidad fue reportada a Arm el 15 de noviembre y se corrigió en la versión r47p0 del controlador Mali, disponible públicamente desde el 14 de diciembre de 2023. Además, la actualización de seguridad de marzo de Android también abordó este grave problema.
La vulnerabilidad permite a una aplicación maliciosa de Android obtener ejecución arbitraria de código en el kernel y acceso root en el dispositivo afectado. El problema incide principalmente en dispositivos que utilizan la función Command Stream Frontend (CSF) de las GPUs Mali. La gravedad radica en un error lógico en la unidad de gestión de memoria de la GPU, capaz de esquivar la Extensión de Etiquetado de Memoria (MTE), una importante mitigación contra la corrupción de memoria debutada en el Pixel 8.
Un investigador logró demostrar cómo explotar este fallo para ejecutar código arbitrario en el kernel del Pixel 8 a través de una aplicación de usuario no confiable. El exploit, verificado incluso con el MTE del kernel habilitado, representa un gran desafío para la robustez de esta tecnología contra la corrupción de memoria.
La MTE está diseñada para mejorar la seguridad de la memoria introduciendo etiquetas en las direcciones de memoria para detectar accesos inválidos. Aunque integrada desde la versión v8.5a de la arquitectura Arm, ciertos tipos de ataques logran evadir esta medida. La falla permite no solo eludir la MTE, sino también aprovechar debilidades estructurales en la gestión de memoria de la GPU.
El fallo en la GPU Mali se vincula con problemas anteriores, como el GHSL-2023-005, donde exploits previos lograron acceso no autorizado mediante la manipulación de tamaños físico y virtual de las regiones de memoria gestionadas por el controlador de la GPU. En esos casos, la gestión de memoria JIT (Just In Time), dependiente de comandos software y hardware administrados por la CPU del dispositivo, se vio comprometida.
En resumen, CVE-2023-6241 explota una carrera entre la asignación y la liberación de memoria en la GPU, permitiendo alterar estados esperados de mapeo de memoria. Esta vulnerabilidad se desencadena principalmente cuando se gestionan simultáneamente tareas de asignación y liberación de memoria, utilizando comandos GPU en piloto automático.
El exploit resultante deja regiones de memoria accidentalmente mapeadas a direcciones ya liberadas, permitiendo el acceso a páginas de memoria previamente liberadas y suponiendo un alto riesgo de seguridad. La técnica empleada involucra la manipulación de las tablas de páginas globales (PGD) de los contextos de GPU para redirigir el acceso y modificar casi cualquier dirección de memoria del kernel, incluyendo código y datos del sistema.
Este incidente destaca la importancia de evaluar y mitigar continuamente posibles vulnerabilidades en coprocesadores y sus controladores, especialmente en un entorno donde la seguridad del sistema operativo es cada vez más robusta. El avance en la explotación de potenciales lagunas en los módulos de hardware muestra un futuro donde los ataques podrían dirigirse a componentes menos vigilados, pero igualmente críticos.