Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
This page was translated by the Cloud Translation API.
Switch to English

Lista blanca de permisos privilegiados

Las aplicaciones privilegiadas son aplicaciones del sistema que se encuentran en un directorio priv-app en una de las particiones de imágenes del sistema. Las particiones utilizadas para las versiones de Android son

  • Android 8.1 y /system inferiores - /system
  • Android 9 y superior: /system, /product, /vendor

En toda esta página, /etc/permissions/priv-app resuelve en la partition /etc/permissions/priv-app .

Históricamente, los fabricantes de dispositivos tenían poco control sobre qué firma | permisos privilegiados se podían otorgar a aplicaciones privilegiadas. A partir de Android 8.0, los fabricantes deben otorgar permisos privilegiados explícitamente en los archivos XML de configuración del sistema en el directorio /etc/permissions . A partir de Android 9, los implementadores deben otorgar o denegar explícitamente todos los permisos privilegiados o el dispositivo no se iniciará.

El archivo privapp-permissions.xml solo puede otorgar o denegar permisos para aplicaciones privilegiadas en la misma partición. Por ejemplo, si una aplicación en la partición /vendor solicita permisos privilegiados, la solicitud solo puede ser otorgada o denegada por un archivo privapp-permissions.xml que también esté en /vendor .

Agregar listas blancas

Las listas blancas de permisos para aplicaciones se pueden enumerar en un solo XML o en varios archivos XML ubicados en el directorio frameworks/base/etc/permissions siguiente manera:

  • /etc/permissions/privapp-permissions- OEM_NAME .xml
  • /etc/permissions/privapp-permissions- DEVICE_NAME .xml

No existe una regla estricta para organizar el contenido. Los implementadores de dispositivos pueden determinar la estructura del contenido siempre que todas las aplicaciones de /system/priv-app estén en la lista blanca. Por ejemplo, Google tiene una única lista blanca para todas las aplicaciones privilegiadas desarrolladas por Google y recomienda la siguiente organización:

  • Los permisos para las aplicaciones que ya están incluidas en el árbol del Proyecto de código abierto de Android (AOSP) se enumeran en /etc/permissions/privapp-permissions-platform.xml .
  • Los permisos para las aplicaciones de Google se enumeran en /etc/permissions/privapp-permissions-google.xml .
  • Para otras aplicaciones, use archivos con el formato: /etc/permissions/privapp-permissions- DEVICE_NAME .xml .

Generando listas blancas

Para generar automáticamente una lista blanca para todas las aplicaciones disponibles en la imagen del sistema, use la herramienta de línea de comandos AOSP en development/tools/privapp_permissions/privapp_permissions.py . Para generar una versión inicial de privapp-permissions.xml específico del dispositivo:

  1. Cree una imagen del sistema:
        . build/envsetup.sh
        lunch PRODUCT_NAME
        make -j
  2. Ejecute el script privapp_permissions.py para generar un archivo privapp-permissions.xml que enumere todas las firmas | permisos privilegiados necesarios para ser incluidos en la lista blanca:
    development/tools/privapp_permissions/privapp_permissions.py
    Esta herramienta imprime contenido XML que se puede utilizar como un solo archivo o dividir en varios archivos en el /etc/permissions ruta del directorio. Si el dispositivo ya incluye listas blancas en los directorios /etc/permissions , la herramienta solo imprime las diferencias (como la firma faltante | permisos privilegiados que necesita agregar a la lista blanca). Esto también es útil para fines de auditoría: cuando se agrega una nueva versión de la aplicación, la herramienta detecta los permisos adicionales necesarios.
  3. Copie los archivos generados en el directorio /etc/permissions , donde el sistema lee los archivos durante el arranque.

Personalizar listas blancas

AOSP incluye una implementación de lista blanca que se puede personalizar según sea necesario. Los permisos para las aplicaciones incluidas en AOSP ya están incluidos en la lista blanca en /etc/permissions/privapp-permissions-platform.xml .

De forma predeterminada, el script privapp_permissions.py genera una salida que otorga automáticamente cualquier permiso solicitado por una aplicación privilegiada. Si hay permisos que se deben denegar, edite el XML para usar una etiqueta "denegar-permiso" en lugar de una etiqueta "permiso". Ejemplo:

<!--
    This XML file declares which signature|privileged permissions should be
    granted to privileged apps that come with the platform
    -->
    <permissions>
<privapp-permissions package="com.android.backupconfirm">
    <permission name="android.permission.BACKUP"/>
    <permission name="android.permission.CRYPT_KEEPER"/>
</privapp-permissions>
<privapp-permissions package="com.android.cellbroadcastreceiver">
    <!-- don't allow application to interact across users -->
    <deny-permission name="android.permission.INTERACT_ACROSS_USERS"/>
    <permission name="android.permission.MANAGE_USERS"/>
    <permission name="android.permission.MODIFY_PHONE_STATE"/>
    <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
    <permission name="android.permission.RECEIVE_EMERGENCY_BROADCAST"/>
</privapp-permissions>
    ...

Encontrar permisos faltantes

Para encontrar permisos faltantes al abrir un nuevo dispositivo, habilite el modo de registro de transición:

ro.control_privapp_permissions=log

Las infracciones se informan en el archivo de registro, pero aún se otorgan permisos sin privilegios. Esto mantiene el dispositivo en un estado de funcionamiento mientras proporciona la lista de violaciones. Este es el formato del mensaje de error:

PackageManager: Privileged permission {PERMISSION_NAME} for package {PACKAGE_NAME} - not in privapp-permissions whitelist

Todas las infracciones deben abordarse agregando los permisos faltantes a las listas blancas adecuadas.

  • En Android 8.0 y versiones anteriores, a las aplicaciones afectadas no se les otorgan los permisos faltantes, incluso si están en la ruta de la priv-app .
  • En Android 9 y versiones posteriores, las violaciones (de los permisos privilegiados ) significan que el dispositivo no se inicia . Debe permitir o denegar explícitamente todos los permisos privilegiados

Hacer cumplir las listas blancas

Una vez que las listas blancas estén en su lugar, habilite la aplicación del tiempo de ejecución estableciendo la propiedad de compilación ro.control_privapp_permissions=enforce .