InvestigaciónCrítico

Endurecimiento de Seguridad en GPU de Android: Reducción de la Superficie de Ataque con SELinux

4 min de lecturaFuente: Google Security Blog

Google y Arm implementan medidas de endurecimiento en la GPU Mali para Android, restringiendo IOCTLs de alto riesgo con SELinux y reduciendo vulnerabilidades.

Endurecimiento de Seguridad en GPU de Android: Un Esfuerzo Colaborativo para Reducir la Superficie de Ataque

El Equipo de Seguridad y Privacidad de Android de Google, en colaboración con Arm, ha implementado nuevas medidas de endurecimiento de seguridad para la GPU Mali, un componente utilizado en miles de millones de dispositivos Android en todo el mundo. La iniciativa busca reducir la superficie de ataque del controlador de la GPU mediante la restricción de acceso a IOCTLs (Controles de Entrada/Salida) de alto riesgo, utilizando políticas de SELinux (Security-Enhanced Linux).

¿Por qué es Importante la Seguridad de las GPU?

Las GPU se han convertido en un objetivo principal para los atacantes debido a su complejidad y acceso privilegiado al sistema. Desde 2021, la mayoría de los exploits basados en controladores del kernel de Android han tenido como blanco las GPU, en particular la interfaz entre el Controlador en Modo Usuario (UMD) y el Controlador en Modo Kernel (KMD). La entrada maliciosa puede explotar fallos en esta interfaz, lo que lleva a la corrupción de memoria y la compromisión del sistema.

Enfoque Técnico: Restricción de IOCTLs de GPU con SELinux

El Equipo Rojo de Android y Arm categorizaron los IOCTLs de la GPU Mali en tres grupos:

  • IOCTLs sin Privilegios – Necesarios para el funcionamiento normal, accesibles para todas las aplicaciones.
  • IOCTLs de Instrumentación – Utilizados para depuración y perfilado, restringidos a aplicaciones shell o debuggable.
  • IOCTLs Restringidos – Obsoletos o solo para desarrollo, bloqueados en entornos de producción.

Para hacer cumplir estas restricciones, Google implementó un despliegue escalonado de políticas SELinux con el fin de minimizar interrupciones:

  1. Política Opt-In – Probada inicialmente en aplicaciones del sistema seleccionadas utilizando un nuevo atributo SELinux gpu_harden.
  2. Política Opt-Out – Aplicó el endurecimiento por defecto, permitiendo a los desarrolladores omitir las restricciones mediante:
    • Dispositivos rooteados
    • android:debuggable="true" en el manifiesto de la aplicación
    • Excepciones permanentes en la política SELinux

Guía de Implementación para OEMs y Desarrolladores

Google ha proporcionado una guía paso a paso para que los socios adopten medidas de endurecimiento similares:

1. Utilizar la Macro de Endurecimiento a Nivel de Plataforma

Una nueva macro en system/sepolicy/public/te_macros permite el filtrado de IOCTLs específico para cada dispositivo:

  • Permite IOCTLs sin privilegios para todas las aplicaciones (appdomain).
  • Restringe IOCTLs de instrumentación a herramientas de depuración (shell, runas_app).
  • Bloquea IOCTLs obsoletos según la versión del SDK objetivo.

2. Definir Listas de IOCTLs Específicas para el Dispositivo

Los OEMs deben crear un archivo ioctl_macros en el directorio de políticas SELinux de su dispositivo, categorizando los IOCTLs (por ejemplo, mali_production_ioctls, mali_instrumentation_ioctls).

Ejemplo:

define(`unpriv_gpu_ioctls', `0x0000, 0x0001, 0x0002')
define(`restricted_ioctls', `0x1110, 0x1111, 0x1112')
define(`instrumentation_gpu_ioctls', `0x2220, 0x2221, 0x2222')

La categorización oficial de IOCTLs de Arm está disponible en su documentación de la GPU r54p2.

3. Aplicar la Política al Dispositivo de GPU

Crear un archivo gpu.te en el directorio de políticas SELinux del dispositivo e invocar la macro de la plataforma con las listas de IOCTLs definidas.

4. Probar, Refinar y Aplicar

Seguir las mejores prácticas de desarrollo iterativo de políticas SELinux, auditando los registros de denegación para asegurar que no se interrumpan aplicaciones legítimas.

Impacto y Perspectivas Futuras

Este esfuerzo de endurecimiento reduce la superficie de ataque de las GPU Mali, protegiendo a los usuarios de vulnerabilidades conocidas y desconocidas. Al hacer que las vulnerabilidades sean inalcanzables, este enfoque proporciona beneficios de seguridad a largo plazo. Google alienta a los OEMs a adoptar estas medidas, reforzando la seguridad de las GPU en todo el ecosistema Android.

Documentación Oficial

Agradecimientos

Un agradecimiento especial a Jeffrey Vander Stoep por sus contribuciones a esta iniciativa.

Compartir

TwitterLinkedIn