Ciberseguridad

Google explica cómo reducir la superficie de ataque de las unidades de procesamiento gráfico en Android

Google, en colaboración con Arm, presenta un enfoque para reforzar el software y el firmware de las unidades Mali GPU mediante la restricción de comandos IOCTL innecesarios usando políticas de SELinux. Las directrices incluyen la creación de una política gradual, la clasificación de los comandos y su prueba antes de aplicarla en los dispositivos.

2025-12-09
7 min de lectura
562 visitas
certi.news Editorial Team
Google explica cómo reducir la superficie de ataque de las unidades de procesamiento gráfico en Android

Google recomienda reducir la superficie de ataque de las unidades de procesamiento gráfico en Android restringiendo los comandos IOCTL que las aplicaciones no necesitan en el entorno de producción, en lugar de depender únicamente de la detección y corrección de vulnerabilidades individuales. Esta práctica es resultado de la colaboración entre el equipo Android Red Team y Arm para analizar la unidad Mali GPU y su controlador, con especial atención a impedir el acceso a funciones innecesarias mediante SELinux.

Este paso adquiere importancia desde el punto de vista de la seguridad porque la unidad de procesamiento gráfico se ha convertido en un objetivo atractivo para los atacantes debido a su complejidad y a que posee permisos elevados dentro del sistema. Según el artículo, la mayoría de las explotaciones basadas en controladores del kernel de Android desde 2021 tuvieron como objetivo la unidad de procesamiento gráfico, y los ataques se centraron principalmente en la interfaz entre el controlador en espacio de usuario, conocido como UMD, y el controlador con permisos elevados en espacio del kernel, o KMD.

¿Por qué es prioritario reducir la superficie de ataque?

Las entradas maliciosas que atraviesan esta interfaz pueden aprovechar fallos que provocan corrupción de memoria. Google considera que hacer inaccesibles las rutas innecesarias ofrece un medio eficaz y, a menudo, más rápido de elevar el nivel de protección, en paralelo con la continuidad de la detección y corrección de errores de software.

El análisis conjunto con Arm incluyó el controlador Mali utilizado en aproximadamente el 45 % de los dispositivos Android y ayudó a identificar partes de la superficie de ataque que representan riesgos de seguridad, pero que no son necesarias para ejecutar los dispositivos en producción. Por ello, la política se centró en los comandos IOCTL, que representan las entradas y salidas del controlador de la unidad de procesamiento gráfico y, por tanto, una parte importante de la superficie de ataque.

El enfoque propuesto divide los comandos Mali en tres categorías:

  • Comandos sin restricciones: son necesarios para el funcionamiento normal y permanecen disponibles para las aplicaciones.
  • Comandos de medición y herramientas: los utilizan las herramientas de análisis del rendimiento y depuración para supervisar el rendimiento de la unidad de procesamiento gráfico.
  • Comandos restringidos: no deben ser utilizados por las aplicaciones de producción e incluyen comandos destinados al desarrollo de la unidad de procesamiento gráfico, además de comandos antiguos que ya no se utilizan en la versión actual del UMD del dispositivo.

La política pretende bloquear los comandos antiguos y de depuración en el entorno de producción, limitando los comandos de medición al shell o a las aplicaciones que llevan la marca de depuración. En cambio, los comandos de producción permanecen disponibles para las aplicaciones normales.

Despliegue gradual de una política de SELinux

Google adoptó un enfoque gradual para reducir la probabilidad de interrumpir aplicaciones legítimas. El proceso comenzó con una política opcional y creó un nuevo atributo de SELinux llamado gpu_harden, que bloquea los comandos de medición, para después aplicarlo a un conjunto específico de aplicaciones del sistema con el fin de probar su impacto. Durante esta fase, se utilizó la regla allowxperm para registrar los intentos de acceso en lugar de bloquearlos directamente; posteriormente, se supervisaron los registros de denegación para verificar que no se produjeran fallos.

Tras confirmar la seguridad del enfoque, la política pasó a un modelo predeterminado más estricto, con la creación de un dominio llamado gpu_debug que permite el acceso a los comandos de medición. De este modo, las aplicaciones quedan protegidas de forma predeterminada, con excepciones disponibles para los desarrolladores en casos concretos:

  • Ejecutar la aplicación en un dispositivo con permisos root.
  • Establecer la propiedad android:debuggable="true" en el archivo de manifiesto de la aplicación.
  • Solicitar una excepción permanente en la política de SELinux de la aplicación.

Pasos para aplicar la política en los dispositivos

Google ofrece estas directrices para ayudar a los socios y al ecosistema más amplio a adoptar un mecanismo similar, separando la lógica de la política general de los detalles de cada dispositivo o controlador. El proceso comienza utilizando un módulo de macros general a nivel de la plataforma Android dentro de system/sepolicy. Este módulo se encuentra en el archivo /sepolicy/public/te_macros y permite a las políticas de los dispositivos pasar listas de comandos IOCTL que deben filtrarse.

El módulo está diseñado para permitir que todas las aplicaciones, o appdomain, accedan a la lista de comandos sin restricciones, y para limitar los comandos de medición sensibles a herramientas de depuración como shell o runas_app cuando la aplicación puede depurarse. También bloquea los comandos con permisos elevados según la versión del SDK de destino de la aplicación, manteniendo la compatibilidad con las aplicaciones más antiguas.

A continuación, el desarrollador del dispositivo crea el archivo ioctl_macros dentro de la carpeta de la política de SELinux específica del dispositivo, por ejemplo, device/your_company/your_device/sepolicy/ioctl_macros, y después define las listas de comandos del controlador de la unidad de procesamiento gráfico. Google recomienda contar como mínimo con listas separadas para los comandos de producción, los comandos de medición y los comandos de depuración, que deben incluir los números IOCTL hexadecimales específicos del controlador.

Arm proporcionó una clasificación oficial de sus comandos IOCTL en el archivo Documentation/ioctl-categories.rst dentro de la versión r54p2, indicando que la lista continuará actualizándose con las futuras versiones de los controladores.

Pruebas antes de la aplicación obligatoria

En el siguiente paso, la política se aplica al nodo del dispositivo de la unidad de procesamiento gráfico mediante la creación de un archivo gpu.te en la carpeta de políticas del dispositivo y, posteriormente, la invocación del módulo de macros general pasando la etiqueta del dispositivo y las listas de IOCTL previamente definidas.

Google subraya que el desarrollo de una política de SELinux debe seguir siendo un proceso iterativo que incluya pruebas, depuración y, finalmente, aplicación obligatoria. Este método permite recopilar datos de uso real, detectar los casos que podrían requerir excepciones y ampliar gradualmente el alcance de la política, en lugar de imponer restricciones amplias desde el principio.

Google considera que reducir la superficie de ataque no solo protege frente a vulnerabilidades conocidas, sino que también puede hacer inaccesibles, a través de las rutas restringidas, las vulnerabilidades aún no descubiertas o las que puedan aparecer en el futuro. Ampliar este enfoque requiere la colaboración entre Android, los fabricantes de dispositivos y los socios del ecosistema, mientras que los equipos de seguridad de Android afirmaron estar comprometidos con apoyar la adopción de estas medidas a mayor escala.

Fuente de la noticia
Google Security Blog
Abrir fuente original ↗
c
Autor

certi.news Editorial Team

Lo que necesitas saber

Google y Arm recomiendan reducir la superficie de ataque de las unidades GPU Mali en Android restringiendo los comandos IOCTL innecesarios mediante políticas de SELinux. El enfoque se basa en clasificar los comandos, probar la política gradualmente y aplicar las restricciones con excepciones específicas para aplicaciones depurables.

  • Las directrices se centran en impedir que las aplicaciones de producción accedan a comandos GPU antiguos y a comandos de depuración innecesarios.
  • Los comandos Mali se clasificaron en comandos de producción sin restricciones, comandos de medición y herramientas, y comandos restringidos.
  • Google utiliza un atributo de SELinux denominado gpu_harden para bloquear los comandos de medición, y un dominio denominado gpu_debug para permitirlos en casos de depuración.
  • Google recomienda utilizar allowxperm para registrar los intentos de acceso durante las pruebas antes de bloquearlos realmente.
  • La aplicación de la política requiere crear listas IOCTL separadas para los comandos de producción, medición y depuración dentro de las políticas del dispositivo.
  • Arm proporcionó una clasificación oficial de los comandos IOCTL en el archivo Documentation/ioctl-categories.rst incluido en la versión r54p2.

Preguntas frecuentes

¿Por qué quiere Google reducir la superficie de ataque de las unidades de procesamiento gráfico?

Porque las GPU y sus controladores son complejos y tienen privilegios elevados, y porque las entradas maliciosas a través de la interfaz del controlador podrían aprovechar vulnerabilidades que provoquen corrupción de memoria.

¿Qué comandos siguen disponibles para las aplicaciones de producción?

Los comandos de producción necesarios para el funcionamiento normal siguen disponibles para las aplicaciones comunes, mientras que los comandos antiguos y de depuración se bloquean, y los comandos de medición se restringen.

¿Cuándo puede una aplicación acceder a los comandos de medición?

Puede hacerlo cuando la aplicación se ejecuta en un dispositivo con privilegios de root, cuando android:debuggable está habilitado o cuando se le concede una excepción permanente en la política de SELinux.

¿Cómo se aplica la política de forma segura?

Google recomienda un enfoque iterativo que comience con el registro y la supervisión, seguido de la prueba y el ajuste de la política. Una vez confirmado que no se deshabilitan aplicaciones legítimas, las restricciones se aplican gradualmente.

Explorar esta historia

Temas y entidades relacionados

De la misma categoría

También te puede interesar

Ver todas las noticias