1### 2### A domain for further sandboxing privileged apps. 3### 4 5typeattribute priv_app coredomain; 6app_domain(priv_app) 7 8# Access the network. 9net_domain(priv_app) 10# Access bluetooth. 11bluetooth_domain(priv_app) 12 13# Allow the allocation and use of ptys 14# Used by: https://play.privileged.com/store/apps/details?id=jackpal.androidterm 15create_pty(priv_app) 16 17# webview crash handling depends on self ptrace (b/27697529, b/20150694, b/19277529#comment7) 18allow priv_app self:process ptrace; 19 20# Some apps ship with shared libraries that they write out 21# to their sandbox directory and then dlopen(). 22allow priv_app app_data_file:file execute; 23 24allow priv_app audioserver_service:service_manager find; 25allow priv_app cameraserver_service:service_manager find; 26allow priv_app drmserver_service:service_manager find; 27allow priv_app mediacodec_service:service_manager find; 28allow priv_app mediametrics_service:service_manager find; 29allow priv_app mediadrmserver_service:service_manager find; 30allow priv_app mediaextractor_service:service_manager find; 31allow priv_app mediaserver_service:service_manager find; 32allow priv_app nfc_service:service_manager find; 33allow priv_app oem_lock_service:service_manager find; 34allow priv_app radio_service:service_manager find; 35allow priv_app surfaceflinger_service:service_manager find; 36allow priv_app app_api_service:service_manager find; 37allow priv_app system_api_service:service_manager find; 38allow priv_app persistent_data_block_service:service_manager find; 39allow priv_app recovery_service:service_manager find; 40 41# Write to /cache. 42allow priv_app { cache_file cache_recovery_file }:dir create_dir_perms; 43allow priv_app { cache_file cache_recovery_file }:file create_file_perms; 44# /cache is a symlink to /data/cache on some devices. Allow reading the link. 45allow priv_app cache_file:lnk_file r_file_perms; 46 47# Write to /data/ota_package for OTA packages. 48allow priv_app ota_package_file:dir rw_dir_perms; 49allow priv_app ota_package_file:file create_file_perms; 50 51# Access to /data/media. 52allow priv_app media_rw_data_file:dir create_dir_perms; 53allow priv_app media_rw_data_file:file create_file_perms; 54 55# Used by Finsky / Android "Verify Apps" functionality when 56# running "adb install foo.apk". 57allow priv_app shell_data_file:file r_file_perms; 58allow priv_app shell_data_file:dir r_dir_perms; 59 60# Allow verifier to access staged apks. 61allow priv_app { apk_tmp_file apk_private_tmp_file }:dir r_dir_perms; 62allow priv_app { apk_tmp_file apk_private_tmp_file }:file r_file_perms; 63 64# b/18504118: Allow reads from /data/anr/traces.txt 65allow priv_app anr_data_file:file r_file_perms; 66 67# Allow GMS core to access perfprofd output, which is stored 68# in /data/misc/perfprofd/. GMS core will need to list all 69# data stored in that directory to process them one by one. 70userdebug_or_eng(` 71 allow priv_app perfprofd_data_file:file r_file_perms; 72 allow priv_app perfprofd_data_file:dir r_dir_perms; 73') 74 75# For AppFuse. 76allow priv_app vold:fd use; 77allow priv_app fuse_device:chr_file { read write }; 78 79# /sys and /proc access 80r_dir_file(priv_app, sysfs_type) 81r_dir_file(priv_app, proc) 82r_dir_file(priv_app, rootfs) 83 84# Allow GMS core to open kernel config for OTA matching through libvintf 85allow priv_app config_gz:file { open read getattr }; 86 87# access the mac address 88allowxperm priv_app self:udp_socket ioctl SIOCGIFHWADDR; 89 90# Allow GMS core to communicate with update_engine for A/B update. 91binder_call(priv_app, update_engine) 92allow priv_app update_engine_service:service_manager find; 93 94# Allow GMS core to communicate with dumpsys storaged. 95binder_call(priv_app, storaged) 96allow priv_app storaged_service:service_manager find; 97 98# Allow Phone to read/write cached ringtones (opened by system). 99allow priv_app ringtone_file:file { getattr read write }; 100 101# Access to /data/preloads 102allow priv_app preloads_data_file:file r_file_perms; 103allow priv_app preloads_data_file:dir r_dir_perms; 104allow priv_app preloads_media_file:file r_file_perms; 105allow priv_app preloads_media_file:dir r_dir_perms; 106 107# Allow privileged apps (e.g. GMS core) to generate unique hardware IDs 108allow priv_app keystore:keystore_key gen_unique_id; 109 110# Allow GMS core to access /sys/fs/selinux/policyvers for compatibility check 111allow priv_app selinuxfs:file r_file_perms; 112 113read_runtime_log_tags(priv_app) 114 115# suppress denials when safetynet scans /system 116dontaudit priv_app exec_type:file getattr; 117 118### 119### neverallow rules 120### 121 122# Receive or send uevent messages. 123neverallow priv_app domain:netlink_kobject_uevent_socket *; 124 125# Receive or send generic netlink messages 126neverallow priv_app domain:netlink_socket *; 127 128# Too much leaky information in debugfs. It's a security 129# best practice to ensure these files aren't readable. 130neverallow priv_app debugfs:file read; 131 132# Do not allow privileged apps to register services. 133# Only trusted components of Android should be registering 134# services. 135neverallow priv_app service_manager_type:service_manager add; 136 137# Do not allow privileged apps to connect to the property service 138# or set properties. b/10243159 139neverallow priv_app property_socket:sock_file write; 140neverallow priv_app init:unix_stream_socket connectto; 141neverallow priv_app property_type:property_service set; 142 143# Do not allow priv_app to be assigned mlstrustedsubject. 144# This would undermine the per-user isolation model being 145# enforced via levelFrom=user in seapp_contexts and the mls 146# constraints. As there is no direct way to specify a neverallow 147# on attribute assignment, this relies on the fact that fork 148# permission only makes sense within a domain (hence should 149# never be granted to any other domain within mlstrustedsubject) 150# and priv_app is allowed fork permission to itself. 151neverallow priv_app mlstrustedsubject:process fork; 152 153# Do not allow priv_app to hard link to any files. 154# In particular, if priv_app links to other app data 155# files, installd will not be able to guarantee the deletion 156# of the linked to file. Hard links also contribute to security 157# bugs, so we want to ensure priv_app never has this 158# capability. 159neverallow priv_app file_type:file link; 160