Obtención De Ejecución De Código En El Kernel De Un Pixel 8 Con MTE

0
70

El 15 de noviembre de 2023, se reportó una vulnerabilidad en la GPU Mali de Arm que fue identificada como CVE-2023-6241. Esta vulnerabilidad ha sido corregida en la versión del controlador de Arm Mali r47p0, lanzada públicamente el 14 de diciembre de 2023, y en la actualización de seguridad de Android publicada en marzo de 2024. La explotación de esta falla permite que una aplicación maliciosa de Android ejecute código arbitrario en el kernel y obtenga privilegios de superusuario en el dispositivo.

La vulnerabilidad afecta a dispositivos con las GPUs Arm Mali más recientes que utilizan la característica Command Stream Frontend (CSF), como los teléfonos Pixel 7 y Pixel 8 de Google. Lo notable de esta vulnerabilidad es que es un error lógico en la unidad de gestión de memoria de la GPU Mali, capaz de eludir la Extensión de Etiquetado de Memoria (MTE), una mitigación nueva y poderosa contra la corrupción de memoria.

La MTE se documenta como una característica de procesadores Arm más recientes que usa implementaciones de hardware para detectar la corrupción de memoria. Aunque la arquitectura Arm64 utiliza punteros de 64 bits para acceder a la memoria, en la práctica, la mayoría de las aplicaciones utilizan un espacio de direcciones mucho menor. La idea principal del etiquetado de memoria es usar los bits superiores de una dirección para almacenar una «etiqueta» que permita comparar con otra etiqueta almacenada en el bloque de memoria asociado. Esto ayuda a mitigar tipos comunes de corrupciones de memoria, permitiendo detectar desbordamientos lineales y corrupciones del tipo «uso después de liberar» mediante la comparación de etiquetas.

La vulnerabilidad CVE-2023-6241 se relaciona con un error de lógica en el manejo de la memoria JIT (Just-In-Time) del controlador Mali. Cuando una aplicación de usuario envía comandos para manejar la memoria JIT a la GPU, se abre una ventana de concurrencia que permite una falla temporal de gestión de memorias por el controlador de GPU, permitiendo la ejecución de código arbitrario en el kernel.

El error permite 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 obtener acceso a las direcciones físicas de memoria liberadas y potencialmente reasignadas a otras estructuras de datos sensibles del kernel, aprovechando esa fuga para escalar privilegios y tomar control total del dispositivo.

Aunque la MTE actúa como una tecnología eficaz para detectar y bloquear accesos a memoria invalidados, la explotación de la CPU conjunta (como la GPU en este caso) permite eludir dicha protección al operar directamente sobre las direcciones físicas. La presencia de la vulnerabilidad se debe a la inconsistencia en la sincronización de manejos de memoria entre el contexto del GPU y las estructuras del kernel, exponiendo así una superficie significativa de ataque.

Estos hallazgos destacan la necesidad crítica de auditar y actualizar continuamente 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.
vía: GitHub Security