Google se compromete a promover la equidad racial para las comunidades negras. Ver cómo.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Linux con seguridad mejorada en Android

Como parte del modelo de seguridad de Android, Android usa Linux con seguridad mejorada (SELinux) para aplicar el control de acceso obligatorio (MAC) en todos los procesos, incluso los procesos que se ejecutan con privilegios de root / superusuario (capacidades de Linux). Muchas empresas y organizaciones han contribuido a la implementación de SELinux de Android. Con SELinux, Android puede proteger y limitar mejor los servicios del sistema, controlar el acceso a los datos de la aplicación y los registros del sistema, reducir los efectos del software malicioso y proteger a los usuarios de posibles fallas en el código de los dispositivos móviles.

SELinux funciona según el principio de la denegación predeterminada: se niega todo lo que no esté explícitamente permitido. SELinux puede operar en dos modos globales:

  • Modo permisivo , en el que las denegaciones de permisos se registran pero no se aplican.
  • Modo de cumplimiento , en el que las denegaciones de permisos se registran y se aplican.

Android incluye SELinux en modo obligatorio y una política de seguridad correspondiente que funciona de forma predeterminada en AOSP. En el modo obligatorio, se evitan las acciones no permitidas y el núcleo registra todos los intentos de violación en dmesg y logcat . Al desarrollar, debe usar estos errores para refinar su software y las políticas de SELinux antes de aplicarlos. Para más detalles, vea Implementar SELinux .

SELinux también admite un modo permisivo por dominio en el que dominios específicos (procesos) pueden hacerse permisivos mientras se coloca el resto del sistema en modo de aplicación global. Un dominio es simplemente una etiqueta que identifica un proceso o conjunto de procesos en la política de seguridad, donde todos los procesos etiquetados con el mismo dominio son tratados de manera idéntica por la política de seguridad. El modo permisivo por dominio permite la aplicación incremental de SELinux a una porción cada vez mayor del sistema y el desarrollo de políticas para nuevos servicios (mientras se mantiene el resto del sistema en vigor).

Antecedentes

El modelo de seguridad de Android se basa en parte en el concepto de sandboxes de aplicaciones . Cada aplicación se ejecuta en su propia caja de arena. Antes de Android 4.3, estos entornos limitados se definían mediante la creación de un UID de Linux único para cada aplicación en el momento de la instalación. Android 4.3 y posterior usa SELinux para definir mejor los límites del entorno limitado de la aplicación de Android.

En Android 5.0 y versiones posteriores, SELinux se aplica por completo, basándose en el lanzamiento permisivo de Android 4.3 y la aplicación parcial de Android 4.4. Con este cambio, se desplazó de la aplicación Android en un conjunto limitado de dominios cruciales ( installd , netd , vold y zygote ) de todo (más de 60 dominios). Específicamente:

  • Todo está en modo obligatorio en Android 5.xy superior.
  • Ningún otro proceso que no sea init debe ejecutarse en el dominio init .
  • Cualquier negación genérica (para un block_device , socket_device , default_service ) indica que el dispositivo necesita un dominio especial.

Android 6.0 fortaleció el sistema al reducir la permisividad de nuestra política para incluir un mejor aislamiento entre los usuarios, el filtrado IOCTL, la reducción de la amenaza de los servicios expuestos, una mayor restricción de los dominios SELinux y un acceso extremadamente limitado /proc .

Android 7.0 actualizó la configuración de SELinux para bloquear aún más el entorno limitado de la aplicación y reducir la superficie de ataque. Esta versión también dividió la pila monolítica de servidores de medios en procesos más pequeños para reducir el alcance de sus permisos. Para obtener más detalles, consulte Protección de Android con más defensas del kernel de Linux y Fortalecimiento de la pila de medios .

Android 8.0 actualizó SELinux para que funcione con Treble , que separa el código de proveedor de nivel inferior del marco del sistema Android. Esta versión actualizó la política de SELinux para permitir que los fabricantes de dispositivos y los vendedores de SOC actualicen sus partes de la política, vendor.img sus imágenes ( vendor.img , boot.img , etc.) y luego actualicen esas imágenes independientemente de la plataforma o viceversa.

Si bien es posible tener una versión de plataforma (marco) más alta / más reciente ejecutándose en el dispositivo, no se admite el caso contrario; las imágenes del proveedor ( vendor.img/odm.img ) no pueden tener una versión más nueva que la plataforma ( system.img ). Por lo tanto, una versión de plataforma más nueva podría presentar problemas de compatibilidad con SELinux porque la política de la plataforma SELinux está en una versión más nueva que las partes de la política del proveedor SELinux. El modelo Android 8.0 proporciona un método para mantener la compatibilidad para evitar OTA simultáneas innecesarias.

Recursos adicionales

Para obtener ayuda para construir políticas útiles de SELinux, consulte los siguientes recursos: