El 15 de noviembre de 2023, se reportó una grave vulnerabilidad en la GPU Mali de Arm etiquetada como CVE-2023-6241. Esta falla de seguridad ha sido corregida en la versión del controlador Arm Mali r47p0, lanzada oficialmente el 14 de diciembre de 2023, y en la actualización de seguridad de Android publicada en marzo de 2024. La vulnerabilidad permitía a una aplicación maliciosa de Android ejecutar código arbitrario en el kernel, logrando así privilegios de superusuario en el dispositivo.
Afectando a dispositivos equipados con las GPUs Arm Mali más recientes que utilizan la característica Command Stream Frontend (CSF), el fallo impacta especialmente a populares modelos de teléfonos como los Google Pixel 7 y Pixel 8. La característica CSF es crucial en estos dispositivos, lo que subraya la gravedad de la vulnerabilidad, originada por un error lógico en la unidad de gestión de memoria de la GPU. Esta falla permite bypassar la Extensión de Etiquetado de Memoria (MTE), una novedosa y robusta medida contra la corrupción de memoria.
La MTE, documentada como una característica en procesadores Arm modernizados, emplea implementaciones de hardware para detectar la corrupción de memoria. Funciona mediante el uso de punteros de 64 bits en la arquitectura Arm64, aunque, en práctica, la mayoría de las aplicaciones utilizan un espacio de direcciones más reducido. La esencia del etiquetado de memoria radica en usar bits superiores de una dirección para almacenar una ‘etiqueta’, la cual se compara con otra etiqueta en el bloque de memoria asociado. Esto permite mitigar tipos comunes de corrupciones de memoria, como los desbordamientos lineales y las corrupciones ‘uso después de liberar’, a través de la comparación de etiquetas.
El error CVE-2023-6241 se centra en un fallo lógico en el manejo de la memoria JIT (Just-In-Time) del controlador Mali. Cuando una aplicación de usuario envía comandos para gestionar la memoria JIT a la GPU, se abre una ventana de concurrencia que provoca una falla temporal en la gestión de memoria por parte del controlador de la GPU, permitiendo así la ejecución de código arbitrario en el kernel.
Esta falla posibilita a un atacante crear una discrepancia en el mapeo de memoria entre las direcciones gestionadas por el controlador y las direcciones realmente asignadas en el hardware. Con esta vulnerabilidad, un atacante puede acceder a las direcciones físicas de memoria liberadas y potencialmente reasignadas a otras estructuras de datos sensibles del kernel, usando esa fuga para escalar privilegios y obtener control total del dispositivo.
Aunque la MTE actúa como una tecnología eficaz para detectar y bloquear accesos a memoria no válidos, la explotación conjunta de la CPU (como la GPU en este caso) permite eludir dicha protección actuando directamente sobre las direcciones físicas. La vulnerabilidad resulta de la inconsistencia en la sincronización del manejo de memoria entre el contexto del GPU y las estructuras del kernel, exponiendo una superficie de ataque significativa.
Estos hallazgos subrayan la imperiosa necesidad de auditar y actualizar constantemente la seguridad de los controladores de dispositivos y coprocesadores en entornos móviles, especialmente aquellos que soportan nuevas tecnologías de mitigación como la MTE.