William Hester | 5f486c7 | 2019-01-15 13:39:30 -0800 | [diff] [blame] | 1 | # Allow apps to read the Test Harness Mode property. This property is used in |
| 2 | # the implementation of ActivityManager.isDeviceInTestHarnessMode() |
| 3 | get_prop(appdomain, test_harness_prop) |
| 4 | |
Inseob Kim | dbcc459 | 2020-05-21 20:12:55 +0900 | [diff] [blame] | 5 | get_prop(appdomain, boot_status_prop) |
| 6 | get_prop(appdomain, dalvik_config_prop) |
Inseob Kim | dddf6f5 | 2020-07-06 22:24:11 +0900 | [diff] [blame] | 7 | get_prop(appdomain, media_config_prop) |
Inseob Kim | 5eacf72 | 2020-07-01 01:27:49 +0900 | [diff] [blame] | 8 | get_prop(appdomain, packagemanager_config_prop) |
Inseob Kim | 4ae7ec1 | 2020-08-03 14:29:47 +0900 | [diff] [blame] | 9 | get_prop(appdomain, radio_control_prop) |
Inseob Kim | dbcc459 | 2020-05-21 20:12:55 +0900 | [diff] [blame] | 10 | get_prop(appdomain, surfaceflinger_color_prop) |
| 11 | get_prop(appdomain, systemsound_config_prop) |
Inseob Kim | 641cffe | 2020-06-05 10:40:16 +0900 | [diff] [blame] | 12 | get_prop(appdomain, telephony_config_prop) |
Inseob Kim | dbcc459 | 2020-05-21 20:12:55 +0900 | [diff] [blame] | 13 | get_prop(appdomain, userspace_reboot_config_prop) |
| 14 | get_prop(appdomain, vold_config_prop) |
Hongguang Chen | 67c3688 | 2020-07-27 15:15:53 -0700 | [diff] [blame] | 15 | get_prop(appdomain, adbd_config_prop) |
Inseob Kim | dbcc459 | 2020-05-21 20:12:55 +0900 | [diff] [blame] | 16 | |
Florian Mayer | 5e52281 | 2019-10-08 16:15:14 +0100 | [diff] [blame] | 17 | userdebug_or_eng(`perfetto_producer({ appdomain })') |
| 18 | |
Jeff Vander Stoep | 607bc67 | 2019-12-16 10:59:03 +0100 | [diff] [blame] | 19 | # Prevent apps from causing presubmit failures. |
| 20 | # Apps can cause selinux denials by accessing CE storage |
| 21 | # and/or external storage. In either case, the selinux denial is |
| 22 | # not the cause of the failure, but just a symptom that |
| 23 | # storage isn't ready. Many apps handle the failure appropriately. |
| 24 | # |
| 25 | # Apps cannot access external storage before it becomes available. |
| 26 | dontaudit appdomain storage_stub_file:dir getattr; |
| 27 | # Attempts to write to system_data_file is generally a sign |
| 28 | # that apps are attempting to access encrypted storage before |
| 29 | # the ACTION_USER_UNLOCKED intent is delivered. Apps are not |
| 30 | # allowed to write to CE storage before it's available. |
| 31 | # Attempting to do so will be blocked by both selinux and unix |
| 32 | # permissions. |
| 33 | dontaudit appdomain system_data_file:dir write; |
Jeff Vander Stoep | 67896ee | 2020-04-02 13:36:17 +0200 | [diff] [blame] | 34 | # Apps should not be reading vendor-defined properties. |
| 35 | dontaudit appdomain vendor_default_prop:file read; |
Jeff Vander Stoep | 607bc67 | 2019-12-16 10:59:03 +0100 | [diff] [blame] | 36 | |
Zim | b61bcc8 | 2021-04-08 12:20:26 +0100 | [diff] [blame] | 37 | # Access to /mnt/media_rw/<vol> (limited by DAC to apps with external_storage gid) |
| 38 | allow appdomain mnt_media_rw_file:dir search; |
| 39 | |
Nathan Harold | ee26864 | 2017-12-14 18:20:30 -0800 | [diff] [blame] | 40 | neverallow appdomain system_server:udp_socket { |
Nathan Harold | 252b015 | 2018-03-27 06:34:54 -0700 | [diff] [blame] | 41 | accept append bind create ioctl listen lock name_bind |
| 42 | relabelfrom relabelto setattr shutdown }; |
Nick Kralevich | 1e5021c | 2018-11-28 17:50:24 -0800 | [diff] [blame] | 43 | |
| 44 | # Transition to a non-app domain. |
| 45 | # Exception for the shell and su domains, can transition to runas, etc. |
Nick Kralevich | 0eb0a16 | 2018-12-12 09:06:05 -0800 | [diff] [blame] | 46 | # Exception for crash_dump to allow for app crash reporting. |
| 47 | # Exception for renderscript binaries (/system/bin/bcc, /system/bin/ld.mc) |
| 48 | # to allow renderscript to create privileged executable files. |
| 49 | neverallow { appdomain -shell userdebug_or_eng(`-su') } |
| 50 | { domain -appdomain -crash_dump -rs }:process { transition }; |
| 51 | neverallow { appdomain -shell userdebug_or_eng(`-su') } |
| 52 | { domain -appdomain }:process { dyntransition }; |
Daniel Rosenberg | afede84 | 2020-05-11 22:50:40 -0700 | [diff] [blame] | 53 | |
| 54 | # Don't allow regular apps access to storage configuration properties. |
| 55 | neverallow { appdomain -mediaprovider_app } storage_config_prop:file no_rw_file_perms; |
Peiyong Lin | 37dea07 | 2020-06-03 12:20:41 -0700 | [diff] [blame] | 56 | |
Inseob Kim | c80b024 | 2020-07-16 22:25:47 +0900 | [diff] [blame] | 57 | # Allow to read sendbug.preferred.domain |
| 58 | get_prop(appdomain, sendbug_config_prop) |
| 59 | |
Peiyong Lin | 37dea07 | 2020-06-03 12:20:41 -0700 | [diff] [blame] | 60 | # Allow to read graphics related properties. |
| 61 | get_prop(appdomain, graphics_config_prop) |
Inseob Kim | c97a97c | 2020-07-20 20:26:07 +0900 | [diff] [blame] | 62 | |
| 63 | # Allow to read persist.config.calibration_fac |
| 64 | get_prop(appdomain, camera_calibration_prop) |
Inseob Kim | 0cef0fe | 2020-11-17 13:54:52 +0900 | [diff] [blame] | 65 | |
| 66 | # Allow to read db.log.detailed, db.log.slow_query_threshold* |
| 67 | get_prop(appdomain, sqlite_log_prop) |
Orion Hodson | 8f75f76 | 2020-10-16 15:29:55 +0100 | [diff] [blame] | 68 | |
Seigo Nonaka | 9c3707f | 2021-01-21 13:08:31 -0800 | [diff] [blame] | 69 | # Allow font file read by apps. |
| 70 | allow appdomain font_data_file:file r_file_perms; |
| 71 | allow appdomain font_data_file:dir r_dir_perms; |
| 72 | |
Martijn Coenen | 4825e86 | 2021-03-29 13:51:35 +0200 | [diff] [blame] | 73 | # Enter /data/misc/apexdata/ |
| 74 | allow appdomain apex_module_data_file:dir search; |
Orion Hodson | 13ee653 | 2021-04-27 15:51:33 +0100 | [diff] [blame^] | 75 | # Read /data/misc/apexdata/com.android.art, execute signed AOT artifacts. |
Martijn Coenen | 4825e86 | 2021-03-29 13:51:35 +0200 | [diff] [blame] | 76 | allow appdomain apex_art_data_file:dir r_dir_perms; |
Orion Hodson | 13ee653 | 2021-04-27 15:51:33 +0100 | [diff] [blame^] | 77 | allow appdomain apex_art_data_file:file rx_file_perms; |
Orion Hodson | 8f75f76 | 2020-10-16 15:29:55 +0100 | [diff] [blame] | 78 | |
Josh Gao | ce1c4a5 | 2021-02-03 18:35:06 -0800 | [diff] [blame] | 79 | # Allow access to tombstones if an fd to one is given to you. |
| 80 | # This is restricted by unix permissions, so an app must go through system_server to get one. |
| 81 | allow appdomain tombstone_data_file:file { getattr read }; |
| 82 | neverallow appdomain tombstone_data_file:file ~{ getattr read }; |
| 83 | |
Orion Hodson | 8f75f76 | 2020-10-16 15:29:55 +0100 | [diff] [blame] | 84 | # Sensitive app domains are not allowed to execute from /data |
| 85 | # to prevent persistence attacks and ensure all code is executed |
| 86 | # from read-only locations. |
| 87 | neverallow { |
| 88 | bluetooth |
| 89 | isolated_app |
| 90 | nfc |
| 91 | radio |
| 92 | shared_relro |
| 93 | system_app |
| 94 | } { |
| 95 | data_file_type |
| 96 | -apex_art_data_file |
| 97 | -dalvikcache_data_file |
| 98 | -system_data_file # shared libs in apks |
| 99 | -apk_data_file |
| 100 | }:file no_x_file_perms; |