| ### |
| ### Untrusted apps. |
| ### |
| ### This file defines the rules for untrusted apps. |
| ### Apps are labeled based on mac_permissions.xml (maps signer and |
| ### optionally package name to seinfo value) and seapp_contexts (maps UID |
| ### and optionally seinfo value to domain for process and type for data |
| ### directory). The untrusted_app domain is the default assignment in |
| ### seapp_contexts for any app with UID between APP_AID (10000) |
| ### and AID_ISOLATED_START (99000) if the app has no specific seinfo |
| ### value as determined from mac_permissions.xml. In current AOSP, this |
| ### domain is assigned to all non-system apps as well as to any system apps |
| ### that are not signed by the platform key. To move |
| ### a system app into a specific domain, add a signer entry for it to |
| ### mac_permissions.xml and assign it one of the pre-existing seinfo values |
| ### or define and use a new seinfo value in both mac_permissions.xml and |
| ### seapp_contexts. |
| ### |
| ### untrusted_app includes all the appdomain rules, plus the |
| ### additional following rules: |
| ### |
| |
| type untrusted_app, domain; |
| app_domain(untrusted_app) |
| net_domain(untrusted_app) |
| bluetooth_domain(untrusted_app) |
| |
| # Some apps ship with shared libraries and binaries that they write out |
| # to their sandbox directory and then execute. |
| allow untrusted_app app_data_file:file { rx_file_perms execmod }; |
| |
| allow untrusted_app tun_device:chr_file rw_file_perms; |
| |
| # ASEC |
| allow untrusted_app asec_apk_file:dir { getattr }; |
| allow untrusted_app asec_apk_file:file r_file_perms; |
| # Execute libs in asec containers. |
| allow untrusted_app asec_public_file:file { execute execmod }; |
| |
| # Allow the allocation and use of ptys |
| # Used by: https://play.google.com/store/apps/details?id=jackpal.androidterm |
| create_pty(untrusted_app) |
| |
| # Used by Finsky / Android "Verify Apps" functionality when |
| # running "adb install foo.apk". |
| # TODO: Long term, we don't want apps probing into shell data files. |
| # Figure out a way to remove these rules. |
| allow untrusted_app shell_data_file:file r_file_perms; |
| allow untrusted_app shell_data_file:dir r_dir_perms; |
| |
| # |
| # Rules migrated from old app domains coalesced into untrusted_app. |
| # This includes what used to be media_app, shared_app, and release_app. |
| # |
| |
| # Access /dev/mtp_usb. |
| allow untrusted_app mtp_device:chr_file rw_file_perms; |
| |
| # Access to /data/media. |
| allow untrusted_app media_rw_data_file:dir create_dir_perms; |
| allow untrusted_app media_rw_data_file:file create_file_perms; |
| |
| # Write to /cache. |
| allow untrusted_app cache_file:dir create_dir_perms; |
| allow untrusted_app cache_file:file create_file_perms; |
| |
| ### |
| ### neverallow rules |
| ### |
| |
| # Too much leaky information in debugfs. It's a security |
| # best practice to ensure these files aren't readable. |
| neverallow untrusted_app debugfs:file read; |
| |
| # Do not allow untrusted apps to register services. |
| # Only trusted components of Android should be registering |
| # services. |
| neverallow untrusted_app service_manager_type:service_manager add; |