Home | History | Annotate | Download | only in private
      1 ###
      2 ### Untrusted_app_all.
      3 ###
      4 ### This file defines the rules shared by all untrusted app domains except
      5 ### apps which target the v2 security sandbox (ephemeral_app for instant apps,
      6 ### untrusted_v2_app for fully installed v2 apps).
      7 ### Apps are labeled based on mac_permissions.xml (maps signer and
      8 ### optionally package name to seinfo value) and seapp_contexts (maps UID
      9 ### and optionally seinfo value to domain for process and type for data
     10 ### directory).  The untrusted_app_all attribute is assigned to all default
     11 ### seapp_contexts for any app with UID between APP_AID (10000)
     12 ### and AID_ISOLATED_START (99000) if the app has no specific seinfo
     13 ### value as determined from mac_permissions.xml.  In current AOSP, this
     14 ### attribute is assigned to all non-system apps as well as to any system apps
     15 ### that are not signed by the platform key.  To move
     16 ### a system app into a specific domain, add a signer entry for it to
     17 ### mac_permissions.xml and assign it one of the pre-existing seinfo values
     18 ### or define and use a new seinfo value in both mac_permissions.xml and
     19 ### seapp_contexts.
     20 ###
     21 ### Note that rules that should apply to all untrusted apps must be in app.te or also
     22 ### added to untrusted_v2_app.te and ephemeral_app.te.
     23 
     24 # Legacy text relocations
     25 allow untrusted_app_all apk_data_file:file execmod;
     26 
     27 # Some apps ship with shared libraries and binaries that they write out
     28 # to their sandbox directory and then execute.
     29 allow untrusted_app_all app_data_file:file { rx_file_perms execmod };
     30 
     31 # ASEC
     32 allow untrusted_app_all asec_apk_file:file r_file_perms;
     33 allow untrusted_app_all asec_apk_file:dir r_dir_perms;
     34 # Execute libs in asec containers.
     35 allow untrusted_app_all asec_public_file:file { execute execmod };
     36 
     37 # Used by Finsky / Android "Verify Apps" functionality when
     38 # running "adb install foo.apk".
     39 # TODO: Long term, we don't want apps probing into shell data files.
     40 # Figure out a way to remove these rules.
     41 allow untrusted_app_all shell_data_file:file r_file_perms;
     42 allow untrusted_app_all shell_data_file:dir r_dir_perms;
     43 
     44 # Allow to read staged apks.
     45 allow untrusted_app_all { apk_tmp_file apk_private_tmp_file }:file {read getattr};
     46 
     47 # Read and write system app data files passed over Binder.
     48 # Motivating case was /data/data/com.android.settings/cache/*.jpg for
     49 # cropping or taking user photos.
     50 allow untrusted_app_all system_app_data_file:file { read write getattr };
     51 
     52 #
     53 # Rules migrated from old app domains coalesced into untrusted_app.
     54 # This includes what used to be media_app, shared_app, and release_app.
     55 #
     56 
     57 # Access to /data/media.
     58 allow untrusted_app_all media_rw_data_file:dir create_dir_perms;
     59 allow untrusted_app_all media_rw_data_file:file create_file_perms;
     60 
     61 # Traverse into /mnt/media_rw for bypassing FUSE daemon
     62 # TODO: narrow this to just MediaProvider
     63 allow untrusted_app_all mnt_media_rw_file:dir search;
     64 
     65 # allow cts to query all services
     66 allow untrusted_app_all servicemanager:service_manager list;
     67 
     68 allow untrusted_app_all audioserver_service:service_manager find;
     69 allow untrusted_app_all cameraserver_service:service_manager find;
     70 allow untrusted_app_all drmserver_service:service_manager find;
     71 allow untrusted_app_all mediaserver_service:service_manager find;
     72 allow untrusted_app_all mediaextractor_service:service_manager find;
     73 allow untrusted_app_all mediacodec_service:service_manager find;
     74 allow untrusted_app_all mediametrics_service:service_manager find;
     75 allow untrusted_app_all mediadrmserver_service:service_manager find;
     76 allow untrusted_app_all nfc_service:service_manager find;
     77 allow untrusted_app_all radio_service:service_manager find;
     78 allow untrusted_app_all surfaceflinger_service:service_manager find;
     79 allow untrusted_app_all app_api_service:service_manager find;
     80 allow untrusted_app_all vr_manager_service:service_manager find;
     81 
     82 # Allow GMS core to access perfprofd output, which is stored
     83 # in /data/misc/perfprofd/. GMS core will need to list all
     84 # data stored in that directory to process them one by one.
     85 userdebug_or_eng(`
     86   allow untrusted_app_all perfprofd_data_file:file r_file_perms;
     87   allow untrusted_app_all perfprofd_data_file:dir r_dir_perms;
     88 ')
     89 
     90 # gdbserver for ndk-gdb ptrace attaches to app process.
     91 allow untrusted_app_all self:process ptrace;
     92 
     93 # Cts: HwRngTest
     94 allow untrusted_app_all sysfs_hwrandom:dir search;
     95 allow untrusted_app_all sysfs_hwrandom:file r_file_perms;
     96 
     97 # Allow apps to view preloaded media content
     98 allow untrusted_app_all preloads_media_file:dir r_dir_perms;
     99 allow untrusted_app_all preloads_media_file:file r_file_perms;
    100 allow untrusted_app_all preloads_data_file:dir search;
    101 
    102 # Allow untrusted apps read / execute access to /vendor/app for there can
    103 # be pre-installed vendor apps that package a library within themselves.
    104 # TODO (b/37784178) Consider creating  a special type for /vendor/app installed
    105 # apps.
    106 allow untrusted_app_all vendor_app_file:dir { open getattr read search };
    107 allow untrusted_app_all vendor_app_file:file { open getattr read execute };
    108 allow untrusted_app_all vendor_app_file:lnk_file { open getattr read };
    109