Esta página describe el diseño del directorio para dispositivos que ejecutan Android 8.0 y versiones posteriores, las reglas de VNDK y la política de seguridad asociada.
Diseño de directorio
El diseño de directorio degenerado consta de los siguientes directorios:
-
/system/lib[64]
contiene todas las bibliotecas compartidas del marco, incluidas LL-NDK, VNDK y bibliotecas solo del marco (incluidas LL-NDK-Private y algunas bibliotecas con los mismos nombres que las de VNDK-SP). -
/system/lib[64]/vndk-sp
contiene bibliotecas VNDK-SP para HAL del mismo proceso. -
/vendor/lib[64]
contiene las bibliotecas VNDK extendidas por el proveedor (bibliotecas DXUA o DXUX VNDK), implementaciones HAL del mismo proceso y otras bibliotecas compartidas por el proveedor. -
/vendor/lib[64]/vndk-sp
puede contener las bibliotecas VNDK-SP extendidas por el proveedor.
Los módulos de proveedores cargan las bibliotecas VNDK desde /system/lib[64]
.
reglas VNDK
Esta sección proporciona una lista completa de las reglas de VNDK:
- Los procesos del marco no deben cargar bibliotecas compartidas que no sean SP-HAL desde particiones de proveedores (aplicado estrictamente a partir de Android 8.1).
- Los procesos del proveedor no deben cargar bibliotecas que no sean LL-NDK, que no sean VNDK-SP ni que no sean VNDK desde la partición del sistema. (no se aplica estrictamente en Android O, pero se incluirá en una versión futura).
- Las bibliotecas de VNDK instaladas deben ser un subconjunto de las bibliotecas de VNDK elegibles definidas por Google.
- Las dependencias externas de SP-HAL y SP-HAL-Dep deben estar restringidas a bibliotecas LL-NDK o VNDK-SP definidas por Google.
- Las dependencias de una biblioteca compartida SP-HAL deben estar restringidas a bibliotecas LL-NDK, bibliotecas VNDK-SP definidas por Google, otras bibliotecas SP-HAL u otras bibliotecas compartidas de proveedores que se pueden etiquetar como bibliotecas SP-HAL-Dep. .
- Una biblioteca compartida de proveedor puede etiquetarse como biblioteca SP-HAL-Dep solo si no es una biblioteca AOSP y sus dependencias están restringidas a bibliotecas LL-NDK, bibliotecas VNDK-SP definidas por Google, bibliotecas SP-HAL o otras bibliotecas SP-HAL-Dep.
- VNDK-SP debe ser autónomo.
libRS_internal.so
recibe un tratamiento especial en Android 8.0, pero se revisará en una versión futura. - No hay comunicación entre el marco y el proveedor a través de interfaces que no sean HIDL, incluidos (pero no limitados a) carpetas, sockets, memorias compartidas, archivos, etc.
- El tamaño de la partición del sistema debe ser lo suficientemente grande como para contener dos copias de todas las bibliotecas VNDK elegibles y una copia de las bibliotecas compartidas del marco no elegible.
politica
Los procesos del marco descritos en esta sección corresponden a coredomain
en sepolicies, mientras que los procesos de proveedores corresponden a non-coredomain
. Por ejemplo, solo se puede acceder a /dev/binder
en el dominio principal y solo se puede acceder a /dev/vndbinder
coredomain
coredomain
no principal.
Políticas similares restringen el acceso a las bibliotecas compartidas en las particiones del sistema y del proveedor. La siguiente tabla muestra los derechos de acceso a bibliotecas compartidas de diferentes categorías:
Categoría | Dividir | Accesible desde dominio principal | Accesible desde dominio no central |
---|---|---|---|
LL-NDK | Sistema | Y | Y |
LL-NDK-Privado | Sistema | Y | Y |
VNDK-SP/VNDK-SP-Privado | Sistema | Y | Y |
VNDK-SP-Ext | Vendedor | Y | Y |
VNDK | Sistema | Y | Y |
VNDK-Ext | Vendedor | norte | Y |
SOLO FWK | Sistema | Y | norte |
FWK-SÓLO-RS | Sistema | Y | norte |
SP-HAL | Vendedor | Y | Y |
SP-HAL-Dep | Vendedor | Y | Y |
SOLO VND | Vendedor | norte | Y |
LL-NDK-Private y VNDK-SP-Private deben ser accesibles desde ambos dominios porque los que no coredomain
accederán indirectamente a ellos. De manera similar, SP-HAL-Dep debe ser accesible desde coredomain
porque SP-HAL se basa en él.
etiqueta same_process_hal_file
Las siguientes bibliotecas existen en la partición del proveedor. Haga que estas bibliotecas sean accesibles tanto desde el coredomain
como desde el dominio no coredomain
.
- VNDK-SP-Ext en
/vendor/lib[64]/vndk-sp
- SP-HAL en
/vendor/lib[64]
o/vendor/lib[64]/hw
- SP-HAL-Dep en
/vendor/lib[64]
o/vendor/lib[64]/hw
Etiquete explícitamente estos archivos como same_process_hal_file
, porque coredomain
no puede acceder a nada en la partición del vendor
de forma predeterminada . Agregue líneas similares a las siguientes al archivo file_contexts
específico del proveedor.
/vendor/lib(64)?/hw/libMySpHal\.so u:object_r:same_process_hal_file:s0 /vendor/lib(64)?/vndk-sp/libBase\.so u:object_r:same_process_hal_file:s0 /vendor/lib(64)?/libBaseInternal\.so u:object_r:same_process_hal_file:s0