diff --git a/private/app_neverallows.te b/private/app_neverallows.te index 4628314f3c2a557687a6619b3c949504f59df0d1..8d9ccd6720730fe93db722c492c48505ddc2d4a7 100644 --- a/private/app_neverallows.te +++ b/private/app_neverallows.te @@ -93,9 +93,7 @@ neverallow { all_untrusted_apps -mediaprovider } { cache_file cache_recovery_fil # application un-installation. neverallow { all_untrusted_apps -mediaprovider } { fs_type - -fuse # sdcard - -sdcardfs # sdcard - -vfat + -sdcard_type file_type -app_data_file # The apps sandbox itself -media_rw_data_file # Internal storage. Known that apps can diff --git a/private/bug_map b/private/bug_map index 127a7e6716623116749c0546d3d729a57963ad20..5e945944a134e3f8d8270423283dfb86d54efd2e 100644 --- a/private/bug_map +++ b/private/bug_map @@ -1,8 +1,43 @@ +dexoptanalyzer apk_data_file file 77853712 +dexoptanalyzer app_data_file file 77853712 +dexoptanalyzer app_data_file lnk_file 77853712 +dexoptanalyzer system_data_file lnk_file 77853712 +dnsmasq netd fifo_file 77868789 +dnsmasq netd unix_stream_socket 77868789 +init app_data_file file 77873135 +init cache_file blk_file 77873135 +init logpersist file 77873135 +init nativetest_data_file dir 77873135 +init pstorefs dir 77873135 +init shell_data_file dir 77873135 +init shell_data_file file 77873135 +init shell_data_file lnk_file 77873135 +init shell_data_file sock_file 77873135 +init system_data_file chr_file 77873135 +mediaextractor app_data_file file 77923736 +mediaextractor radio_data_file file 77923736 +mediaprovider cache_file blk_file 77925342 +mediaprovider mnt_media_rw_file dir 77925342 +mediaprovider shell_data_file dir 77925342 +netd priv_app unix_stream_socket 77870037 +netd untrusted_app unix_stream_socket 77870037 +netd untrusted_app_25 unix_stream_socket 77870037 +netd untrusted_app_27 unix_stream_socket 77870037 platform_app nfc_data_file dir 74331887 +postinstall postinstall capability 77958490 +postinstall_dexopt postinstall_dexopt capability 77958490 +postinstall_dexopt user_profile_data_file file 77958490 priv_app system_data_file dir 72811052 +profman apk_data_file dir 77922323 +statsd hal_health_default binder 77919007 storaged storaged capability 77634061 +surfaceflinger mediacodec binder 77924251 system_server crash_dump process 73128755 +system_server logd_socket sock_file 64734187 +system_server sdcardfs file 77856826 +system_server zygote process 77856826 untrusted_app_25 system_data_file dir 72550646 untrusted_app_27 system_data_file dir 72550646 usbd usbd capability 72472544 system_server sysfs file 77816522 +zygote untrusted_app_25 process 77925912 diff --git a/private/compat/26.0/26.0.ignore.cil b/private/compat/26.0/26.0.ignore.cil index 71c7a007445f8a5bb97ebf474085f6b7572c9c96..d45596ab982b97674faf2f33653adcb19731982e 100644 --- a/private/compat/26.0/26.0.ignore.cil +++ b/private/compat/26.0/26.0.ignore.cil @@ -18,6 +18,7 @@ crossprofileapps_service e2fs e2fs_exec + exfat exported_bluetooth_prop exported_config_prop exported_dalvik_prop @@ -64,6 +65,7 @@ lowpan_service mediaextractor_update_service mediaprovider_tmpfs + mnt_vendor_file netd_stable_secret_prop network_watchlist_data_file network_watchlist_service @@ -86,6 +88,8 @@ statsd statsd_exec statsd_tmpfs + statsdw + statsdw_socket statscompanion_service storaged_data_file sysfs_fs_ext4_features diff --git a/private/compat/27.0/27.0.ignore.cil b/private/compat/27.0/27.0.ignore.cil index 94c81d0cb8332f2a6915bdbe12a583a1a3dfbeda..aa322418f657488fc55424ee7383de5a5ca9cdd0 100644 --- a/private/compat/27.0/27.0.ignore.cil +++ b/private/compat/27.0/27.0.ignore.cil @@ -14,6 +14,7 @@ bpfloader_exec cgroup_bpf crossprofileapps_service + exfat exported2_config_prop exported2_default_prop exported2_radio_prop @@ -53,6 +54,7 @@ lowpan_prop lowpan_service mediaextractor_update_service + mnt_vendor_file network_watchlist_data_file network_watchlist_service perfetto @@ -74,6 +76,8 @@ statsd statsd_exec statsd_tmpfs + statsdw + statsdw_socket storaged_data_file system_boot_reason_prop system_update_service diff --git a/private/file.te b/private/file.te index fda972b48f11e374048e78ade629a76df82db556..58ee0def82540ac88fbc049c5eef678f32235a95 100644 --- a/private/file.te +++ b/private/file.te @@ -4,6 +4,8 @@ type config_gz, fs_type, proc_type; # /data/misc/stats-data, /data/misc/stats-service type stats_data_file, file_type, data_file_type, core_data_file_type; +type statsdw_socket, file_type, coredomain_socket, mlstrustedobject; + # /data/misc/storaged type storaged_data_file, file_type, data_file_type, core_data_file_type; diff --git a/private/file_contexts b/private/file_contexts index c5169ff60060848755275c267bbd59770e3c1027..71bff736572776b534a04644f3d4959f28cc128b 100644 --- a/private/file_contexts +++ b/private/file_contexts @@ -132,6 +132,7 @@ /dev/socket/logd u:object_r:logd_socket:s0 /dev/socket/logdr u:object_r:logdr_socket:s0 /dev/socket/logdw u:object_r:logdw_socket:s0 +/dev/socket/statsdw u:object_r:statsdw_socket:s0 /dev/socket/mdns u:object_r:mdns_socket:s0 /dev/socket/mdnsd u:object_r:mdnsd_socket:s0 /dev/socket/mtpd u:object_r:mtpd_socket:s0 @@ -526,3 +527,7 @@ /mnt/user(/.*)? u:object_r:mnt_user_file:s0 /mnt/runtime(/.*)? u:object_r:storage_file:s0 /storage(/.*)? u:object_r:storage_file:s0 + +############################# +# mount point for read-write vendor partitions +/mnt/vendor(/.*)? u:object_r:mnt_vendor_file:s0 diff --git a/private/genfs_contexts b/private/genfs_contexts index c261afa9e8ad369e94184f52a0e316bcf7ea36cc..ce26d73a69efedc4663de19afb358d5d7d2b2444 100644 --- a/private/genfs_contexts +++ b/private/genfs_contexts @@ -229,6 +229,7 @@ genfscon debugfs /tracing/events/lowmemorykiller/ genfscon inotifyfs / u:object_r:inotify:s0 genfscon vfat / u:object_r:vfat:s0 +genfscon exfat / u:object_r:exfat:s0 genfscon debugfs / u:object_r:debugfs:s0 genfscon fuse / u:object_r:fuse:s0 genfscon configfs / u:object_r:configfs:s0 diff --git a/private/platform_app.te b/private/platform_app.te index 80b20e1454e0cb8cd5efba77de2c2ad9e3c2796c..f60597a7ef59918bbe2d4405781b6777b8e0bd82 100644 --- a/private/platform_app.te +++ b/private/platform_app.te @@ -34,8 +34,8 @@ allow platform_app cache_file:file create_file_perms; # Direct access to vold-mounted storage under /mnt/media_rw # This is a performance optimization that allows platform apps to bypass the FUSE layer allow platform_app mnt_media_rw_file:dir r_dir_perms; -allow platform_app vfat:dir create_dir_perms; -allow platform_app vfat:file create_file_perms; +allow platform_app sdcard_type:dir create_dir_perms; +allow platform_app sdcard_type:file create_file_perms; # com.android.systemui allow platform_app rootfs:dir getattr; diff --git a/private/statsd.te b/private/statsd.te index fec10a4b69aa8d35f7085fb59657da9341d56add..7305464ba370c6f6c8479ddedb30e254bfb796e6 100644 --- a/private/statsd.te +++ b/private/statsd.te @@ -1,4 +1,4 @@ -type statsd, domain; +type statsd, domain, mlstrustedsubject; typeattribute statsd coredomain; init_daemon_domain(statsd) @@ -73,6 +73,7 @@ binder_call(statsd, stats) # Allow access to with hardware layer and process stats. allow statsd proc_uid_cputime_showstat:file { getattr open read }; +hal_client_domain(statsd, hal_health) hal_client_domain(statsd, hal_power) hal_client_domain(statsd, hal_thermal) @@ -81,6 +82,12 @@ allow statsd adbd:fd use; allow statsd adbd:unix_stream_socket { getattr read write }; allow statsd shell:fifo_file { getattr read }; +unix_socket_send(bluetooth, statsdw, statsd) +unix_socket_send(bootstat, statsdw, statsd) +unix_socket_send(platform_app, statsdw, statsd) +unix_socket_send(statsd, statsdw, statsd) +unix_socket_send(system_server, statsdw, statsd) + ### ### neverallow rules ### diff --git a/private/system_server.te b/private/system_server.te index 9830bd6a93ea1f62545f4bfe558d59a3d4e9a432..5c2335e7f1cc74be71ab0440825b278cea2ddfb7 100644 --- a/private/system_server.te +++ b/private/system_server.te @@ -105,6 +105,7 @@ allow system_server appdomain:process { getsched setsched }; allow system_server audioserver:process { getsched setsched }; allow system_server hal_audio:process { getsched setsched }; allow system_server hal_bluetooth:process { getsched setsched }; +allow system_server mediacodec:process { getsched setsched }; allow system_server cameraserver:process { getsched setsched }; allow system_server hal_camera:process { getsched setsched }; allow system_server mediaserver:process { getsched setsched }; @@ -113,6 +114,7 @@ allow system_server bootanim:process { getsched setsched }; # Allow system_server to write to /proc/<pid>/timerslack_ns allow system_server appdomain:file w_file_perms; allow system_server audioserver:file w_file_perms; +allow system_server mediacodec:file w_file_perms; allow system_server cameraserver:file w_file_perms; allow system_server hal_audio_server:file w_file_perms; diff --git a/private/vold_prepare_subdirs.te b/private/vold_prepare_subdirs.te index 93d6c115b152d0bb2582d0300d3d3e4f599bb879..ab1825824998ce4412a94910a926209ae2b65c45 100644 --- a/private/vold_prepare_subdirs.te +++ b/private/vold_prepare_subdirs.te @@ -12,8 +12,8 @@ allow vold_prepare_subdirs self:process setfscreate; allow vold_prepare_subdirs { system_data_file vendor_data_file -}:dir { open read write add_name remove_name relabelfrom }; -allow vold_prepare_subdirs system_data_file:file getattr; +}:dir { open read write add_name remove_name rmdir relabelfrom }; +allow vold_prepare_subdirs system_data_file:file { getattr unlink }; allow vold_prepare_subdirs vold_data_file:dir { create open read write search getattr setattr remove_name rmdir relabelto }; allow vold_prepare_subdirs vold_data_file:file { getattr unlink }; allow vold_prepare_subdirs storaged_data_file:dir { create_dir_perms relabelto }; diff --git a/public/app.te b/public/app.te index 5df558e398eea4ef9f7dce2c4acb7d0c9aa2fba6..ac11a3a108eeb4f449a1c21304752a2bdf5c07c1 100644 --- a/public/app.te +++ b/public/app.te @@ -260,19 +260,12 @@ allow { appdomain -isolated_app -ephemeral_app } mnt_user_file:dir r_dir_perms; allow { appdomain -isolated_app -ephemeral_app } mnt_user_file:lnk_file r_file_perms; # Read/write visible storage -allow { appdomain -isolated_app -ephemeral_app } fuse:dir create_dir_perms; -allow { appdomain -isolated_app -ephemeral_app } fuse:file create_file_perms; -allow { appdomain -isolated_app -ephemeral_app } sdcardfs:dir create_dir_perms; -allow { appdomain -isolated_app -ephemeral_app } sdcardfs:file create_file_perms; +allow { appdomain -isolated_app -ephemeral_app } sdcard_type:dir create_dir_perms; +allow { appdomain -isolated_app -ephemeral_app } sdcard_type:file create_file_perms; # This should be removed if sdcardfs is modified to alter the secontext for its # accesses to the underlying FS. -allow { appdomain -isolated_app -ephemeral_app } { media_rw_data_file vfat }:dir create_dir_perms; -allow { appdomain -isolated_app -ephemeral_app } { media_rw_data_file vfat }:file create_file_perms; - -# Access OBBs (vfat images) mounted by vold (b/17633509) -# File write access allowed for FDs returned through Storage Access Framework -allow { appdomain -isolated_app -ephemeral_app } vfat:dir r_dir_perms; -allow { appdomain -isolated_app -ephemeral_app } vfat:file rw_file_perms; +allow { appdomain -isolated_app -ephemeral_app } media_rw_data_file:dir create_dir_perms; +allow { appdomain -isolated_app -ephemeral_app } media_rw_data_file:file create_file_perms; # Allow apps to use the USB Accessory interface. # http://developer.android.com/guide/topics/connectivity/usb/accessory.html diff --git a/public/domain.te b/public/domain.te index 1b7bbd4abf30f44bd89fd48c49205344feabc822..cccc651597a2359e6225bce171c7f38eec710bb8 100644 --- a/public/domain.te +++ b/public/domain.te @@ -363,6 +363,14 @@ neverallow { -system_server -ueventd } hw_random_device:chr_file *; +# b/78174219 b/64114943 +neverallow { + domain + -init + -shell # stat of /dev, getattr only + -vendor_init + -ueventd +} keychord_device:chr_file *; # Ensure that all entrypoint executables are in exec_type or postinstall_file. neverallow * { file_type -exec_type -postinstall_file }:file entrypoint; @@ -560,7 +568,7 @@ neverallow { } serialno_prop:file r_file_perms; # Do not allow reading the last boot timestamp from system properties -neverallow { domain -init -system_server } firstboot_prop:file r_file_perms; +neverallow { domain -init -system_server -dumpstate } firstboot_prop:file r_file_perms; neverallow { domain @@ -600,6 +608,7 @@ neverallow { -init -uncrypt -update_engine + -vendor_init -vold -recovery -ueventd @@ -834,13 +843,25 @@ full_treble_only(` -appdomain # TODO(b/34980020) remove exemption for appdomain -coredomain -data_between_core_and_vendor_violators # TODO(b/34980020) Remove once all violators have been cleaned up + -vendor_init } { core_data_file_type # libc includes functions like mktime and localtime which attempt to access # files in /data/misc/zoneinfo/tzdata file. These functions are considered # vndk-stable and thus must be allowed for all processes. -zoneinfo_data_file - }:file_class_set ~{ append getattr ioctl read write }; + }:file_class_set ~{ append getattr ioctl read write }; + neverallow { + vendor_init + -data_between_core_and_vendor_violators + } { + core_data_file_type + -unencrypted_data_file + -zoneinfo_data_file + }:file_class_set ~{ append getattr ioctl read write }; + # vendor init needs to be able to read unencrypted_data_file to create directories with FBE. + # The vendor init binary lives on the system partition so there is not a concern with stability. + neverallow vendor_init unencrypted_data_file:file ~r_file_perms; ') full_treble_only(` # vendor domains may only access dirs in /data/vendor, never core_data_file_types @@ -849,12 +870,26 @@ full_treble_only(` -appdomain # TODO(b/34980020) remove exemption for appdomain -coredomain -data_between_core_and_vendor_violators - } { - core_data_file_type - -system_data_file # default label for files on /data. Covered below... - -vendor_data_file - -zoneinfo_data_file - }:dir *; + -vendor_init + } { + core_data_file_type + -system_data_file # default label for files on /data. Covered below... + -vendor_data_file + -zoneinfo_data_file + }:dir *; + neverallow { + vendor_init + -data_between_core_and_vendor_violators + } { + core_data_file_type + -unencrypted_data_file + -system_data_file + -vendor_data_file + -zoneinfo_data_file + }:dir *; + # vendor init needs to be able to read unencrypted_data_file to create directories with FBE. + # The vendor init binary lives on the system partition so there is not a concern with stability. + neverallow vendor_init unencrypted_data_file:dir ~search; ') full_treble_only(` # vendor domains may only access dirs in /data/vendor, never core_data_file_types @@ -1121,6 +1156,7 @@ neverallow { -system_app -init -installd # for relabelfrom and unlink, check for this in explicit neverallow + -vold_prepare_subdirs # For unlink with_asan(`-asan_extract') } system_data_file:file no_w_file_perms; # do not grant anything greater than r_file_perms and relabelfrom unlink @@ -1355,3 +1391,9 @@ userdebug_or_eng(` dontaudit domain proc_type:file create; dontaudit domain sysfs_type:file create; ') + +# Platform must not have access to /mnt/vendor. +neverallow { + coredomain + -init +} mnt_vendor_file:dir *; diff --git a/public/dumpstate.te b/public/dumpstate.te index 8906f5dcf4c8431ec3aacc0a8fc502519fb29a85..596f33247a9d3e9bda7e29da0beb931f32ed1a6f 100644 --- a/public/dumpstate.te +++ b/public/dumpstate.te @@ -190,6 +190,10 @@ allow dumpstate cache_recovery_file:file r_file_perms; allow dumpstate recovery_data_file:dir r_dir_perms; allow dumpstate recovery_data_file:file r_file_perms; +#Access /data/misc/update_engine_log +allow dumpstate update_engine_log_data_file:dir r_dir_perms; +allow dumpstate update_engine_log_data_file:file r_file_perms; + # Access /data/misc/profiles/{cur,ref}/ userdebug_or_eng(` allow dumpstate user_profile_data_file:dir r_dir_perms; @@ -233,16 +237,8 @@ set_prop(dumpstate, exported_dumpstate_prop) # dumpstate_options_prop is used to pass extra command-line args. set_prop(dumpstate, dumpstate_options_prop) -# Read device's serial number from system properties -get_prop(dumpstate, serialno_prop) - -# Read state of logging-related properties -get_prop(dumpstate, device_logging_prop) - -# Read state of boot reason properties -get_prop(dumpstate, bootloader_boot_reason_prop) -get_prop(dumpstate, last_boot_reason_prop) -get_prop(dumpstate, system_boot_reason_prop) +# Read any system properties +get_prop(dumpstate, property_type) # Access to /data/media. # This should be removed if sdcardfs is modified to alter the secontext for its diff --git a/public/file.te b/public/file.te index 156fce141519249a0ef180f6f7870de867ed0f4a..1451dc4501bfb8f4d6f2a9ef26f8cef9bb3f6529 100644 --- a/public/file.te +++ b/public/file.te @@ -108,6 +108,7 @@ type mqueue, fs_type; type fuse, sdcard_type, fs_type, mlstrustedobject; type sdcardfs, sdcard_type, fs_type, mlstrustedobject; type vfat, sdcard_type, fs_type, mlstrustedobject; +type exfat, sdcard_type, fs_type, mlstrustedobject; type debugfs, fs_type, debugfs_type; type debugfs_mmc, fs_type, debugfs_type; type debugfs_trace_marker, fs_type, debugfs_type, mlstrustedobject; @@ -224,6 +225,9 @@ type storage_file, file_type; type mnt_media_rw_stub_file, file_type; type storage_stub_file, file_type; +# Mount location for read-write vendor partitions. +type mnt_vendor_file, file_type; + # /postinstall: Mount point used by update_engine to run postinstall. type postinstall_mnt_dir, file_type; # Files inside the /postinstall mountpoint are all labeled as postinstall_file. diff --git a/public/hal_configstore.te b/public/hal_configstore.te index d5f2ef6fe440e7e8342ebd0703032b8efc4cc688..c8051e142f8f8e17439cc638ca7bc6f54b5107d1 100644 --- a/public/hal_configstore.te +++ b/public/hal_configstore.te @@ -49,7 +49,14 @@ neverallow hal_configstore_server { }:{ file fifo_file sock_file } *; # Should never need sdcard access -neverallow hal_configstore_server { fuse sdcardfs vfat }:file *; +neverallow hal_configstore_server { + sdcard_type + fuse sdcardfs vfat exfat # manual expansion for completeness +}:dir ~getattr; +neverallow hal_configstore_server { + sdcard_type + fuse sdcardfs vfat exfat # manual expansion for completeness +}:file *; # Do not permit access to service_manager and vndservice_manager neverallow hal_configstore_server *:service_manager *; diff --git a/public/hal_telephony.te b/public/hal_telephony.te index 31859aa5179608b03c9d7687faf3b675a09e2a3f..5f8cc41ca10a3b1cba2db638ffce849b014a0933 100644 --- a/public/hal_telephony.te +++ b/public/hal_telephony.te @@ -21,7 +21,6 @@ allow hal_telephony_server efs_file:file create_file_perms; allow hal_telephony_server vendor_shell_exec:file rx_file_perms; allow hal_telephony_server bluetooth_efs_file:file r_file_perms; allow hal_telephony_server bluetooth_efs_file:dir r_dir_perms; -allow hal_telephony_server sdcard_type:dir r_dir_perms; # property service set_prop(hal_telephony_server, radio_prop) diff --git a/public/lmkd.te b/public/lmkd.te index 5b6a7084bfa9839aa9f5a59b49d45feb88b74270..472946ece09291baa6b87e8afc086308a5e97e18 100644 --- a/public/lmkd.te +++ b/public/lmkd.te @@ -43,6 +43,9 @@ allow lmkd domain:file { open read }; # reboot because orderly shutdown may not be possible. allow lmkd proc_sysrq:file rw_file_perms; +# Read /proc/meminfo +allow lmkd proc_meminfo:file r_file_perms; + ### neverallow rules # never honor LD_PRELOAD diff --git a/public/netd.te b/public/netd.te index 0e9e08ca7f0772f62d97d17a0a87b9e8d7ecb082..18113e75662d686d79a4982211a5853b4288f70d 100644 --- a/public/netd.te +++ b/public/netd.te @@ -141,7 +141,7 @@ neverallow netd { appdomain userdebug_or_eng(`-su') }:binder call; # persist.netd.stable_secret contains RFC 7217 secret key which should never be # leaked to other processes. Make sure it never leaks. -neverallow { domain -netd -init } netd_stable_secret_prop:file r_file_perms; +neverallow { domain -netd -init -dumpstate } netd_stable_secret_prop:file r_file_perms; # We want to ensure that no other process ever tries tampering with persist.netd.stable_secret, # the RFC 7217 secret key managed by netd. Doing so could compromise user privacy. diff --git a/public/property.te b/public/property.te index f757936d7b669c1cbfb5546f9a948fa1e34cb9b6..0e298098885945e466c5130a7a3977d20b4a6059 100644 --- a/public/property.te +++ b/public/property.te @@ -154,7 +154,6 @@ compatible_property_only(` -coredomain -appdomain -hal_nfc_server - -vendor_init } { nfc_prop }:property_service set; @@ -167,11 +166,57 @@ compatible_property_only(` -vendor_init } { exported_radio_prop - exported2_radio_prop exported3_radio_prop + }:property_service set; + + neverallow { + domain + -coredomain + -appdomain + -hal_telephony_server + } { + exported2_radio_prop radio_prop }:property_service set; + neverallow { + domain + -coredomain + -bluetooth + -hal_bluetooth + } { + bluetooth_prop + }:property_service set; + + neverallow { + domain + -coredomain + -bluetooth + -hal_bluetooth + -vendor_init + } { + exported_bluetooth_prop + }:property_service set; + + neverallow { + domain + -coredomain + -hal_wifi + -wificond + } { + wifi_prop + }:property_service set; + + neverallow { + domain + -coredomain + -hal_wifi + -wificond + -vendor_init + } { + exported_wifi_prop + }:property_service set; + # Prevent properties from being read neverallow { domain @@ -200,7 +245,6 @@ compatible_property_only(` -coredomain -appdomain -hal_nfc_server - -vendor_init } { nfc_prop }:file no_rw_file_perms; @@ -210,8 +254,25 @@ compatible_property_only(` -coredomain -appdomain -hal_telephony_server - -vendor_init } { radio_prop }:file no_rw_file_perms; + + neverallow { + domain + -coredomain + -bluetooth + -hal_bluetooth + } { + bluetooth_prop + }:file no_rw_file_perms; + + neverallow { + domain + -coredomain + -hal_wifi + -wificond + } { + wifi_prop + }:file no_rw_file_perms; ') diff --git a/public/property_contexts b/public/property_contexts index 0156a47bb02d6a2ed4677eb597150fd882185461..0907a27f16d0580d5e3857c243315db4efd7186f 100644 --- a/public/property_contexts +++ b/public/property_contexts @@ -63,7 +63,7 @@ drm.service.enabled u:object_r:exported3_default_prop:s0 exact bool keyguard.no_require_sim u:object_r:exported3_default_prop:s0 exact bool media.recorder.show_manufacturer_and_model u:object_r:exported3_default_prop:s0 exact bool persist.bluetooth.a2dp_offload.cap u:object_r:bluetooth_a2dp_offload_prop:s0 exact string -persist.bluetooth.a2dp_offload.enable u:object_r:bluetooth_a2dp_offload_prop:s0 exact bool +persist.bluetooth.a2dp_offload.disabled u:object_r:bluetooth_a2dp_offload_prop:s0 exact bool persist.config.calibration_fac u:object_r:exported3_default_prop:s0 exact string persist.dbg.volte_avail_ovr u:object_r:exported3_default_prop:s0 exact int persist.dbg.vt_avail_ovr u:object_r:exported3_default_prop:s0 exact int @@ -72,13 +72,13 @@ persist.radio.multisim.config u:object_r:exported3_radio_prop:s0 exact string persist.sys.dalvik.vm.lib.2 u:object_r:exported2_system_prop:s0 exact string persist.sys.sf.color_saturation u:object_r:exported2_system_prop:s0 exact string persist.sys.sf.native_mode u:object_r:exported2_system_prop:s0 exact bool -persist.vendor.bluetooth.a2dp_offload.enable u:object_r:bluetooth_a2dp_offload_prop:s0 exact bool pm.dexopt.ab-ota u:object_r:exported_pm_prop:s0 exact string pm.dexopt.bg-dexopt u:object_r:exported_pm_prop:s0 exact string pm.dexopt.boot u:object_r:exported_pm_prop:s0 exact string pm.dexopt.first-boot u:object_r:exported_pm_prop:s0 exact string pm.dexopt.install u:object_r:exported_pm_prop:s0 exact string ro.audio.monitorRotation u:object_r:exported3_default_prop:s0 exact bool +ro.bluetooth.a2dp_offload.supported u:object_r:bluetooth_a2dp_offload_prop:s0 exact bool ro.boot.vendor.overlay.theme u:object_r:exported_overlay_prop:s0 exact string ro.boot.wificountrycode u:object_r:exported3_default_prop:s0 exact string ro.bt.bdaddr_path u:object_r:exported_bluetooth_prop:s0 exact string diff --git a/public/tombstoned.te b/public/tombstoned.te index cf3ddcba9b8dda8e37449f98793f097efb48d516..1dfcf504f081cf2e14587a3197f71ba9bd5d55b4 100644 --- a/public/tombstoned.te +++ b/public/tombstoned.te @@ -19,4 +19,4 @@ auditallow tombstoned anr_data_file:file { append write }; # Changes for the new stack dumping mechanism. Each trace goes into a # separate file, and these files are managed by tombstoned. allow tombstoned anr_data_file:dir rw_dir_perms; -allow tombstoned anr_data_file:file { getattr open create }; +allow tombstoned anr_data_file:file { create getattr open unlink }; diff --git a/public/vendor_init.te b/public/vendor_init.te index 0237861a949ce133d04013280a9963e9c0df11ee..b025fc88a97384830b9d2d20652a4d4a30c9f07d 100644 --- a/public/vendor_init.te +++ b/public/vendor_init.te @@ -34,6 +34,12 @@ allow vendor_init self:global_capability_class_set dac_override; # we just allow all file types except /system files here. allow vendor_init self:global_capability_class_set { chown fowner fsetid }; +# mkdir with FBE requires reading /data/unencrypted/{ref,mode}. +allow vendor_init unencrypted_data_file:dir search; +allow vendor_init unencrypted_data_file:file r_file_perms; + +allow vendor_init system_data_file:dir getattr; + allow vendor_init { file_type -core_data_file_type @@ -146,6 +152,9 @@ allow vendor_init serialno_prop:file { getattr open read }; # Vendor init can perform operations on trusted and security Extended Attributes allow vendor_init self:global_capability_class_set sys_admin; +# Raw writes to misc block device +allow vendor_init misc_block_device:blk_file w_file_perms; + not_compatible_property(` set_prop(vendor_init, { property_type diff --git a/vendor/file_contexts b/vendor/file_contexts index ba3c705e22279d0e23e60325743b7da325da5fd8..17a12d9136fffd364e2f74ce98604c05d5ecbe58 100644 --- a/vendor/file_contexts +++ b/vendor/file_contexts @@ -32,6 +32,8 @@ /(vendor|system/vendor)/bin/hw/android\.hardware\.media\.omx@1\.0-service u:object_r:mediacodec_exec:s0 /(vendor|system/vendor)/bin/hw/android\.hardware\.power@1\.0-service u:object_r:hal_power_default_exec:s0 /(vendor|system/vendor)/bin/hw/android\.hardware\.radio\.config@1\.0-service u:object_r:hal_radio_config_default_exec:s0 +/(vendor|system/vendor)/bin/hw/android\.hardware\.radio@1\.2-radio-service u:object_r:hal_radio_default_exec:s0 +/(vendor|system/vendor)/bin/hw/android\.hardware\.radio@1\.2-sap-service u:object_r:hal_radio_default_exec:s0 /(vendor|system/vendor)/bin/hw/android\.hardware\.sensors@1\.0-service u:object_r:hal_sensors_default_exec:s0 /(vendor|system/vendor)/bin/hw/android\.hardware\.secure_element@1\.0-service u:object_r:hal_secure_element_default_exec:s0 /(vendor|system/vendor)/bin/hw/rild u:object_r:rild_exec:s0 diff --git a/vendor/hal_radio_default.te b/vendor/hal_radio_default.te new file mode 100644 index 0000000000000000000000000000000000000000..82fd40e948895f4200e79c0a5b1ce20b3ebadb28 --- /dev/null +++ b/vendor/hal_radio_default.te @@ -0,0 +1,6 @@ +type hal_radio_default, domain; +hal_server_domain(hal_radio_default, hal_telephony) + +type hal_radio_default_exec, exec_type, vendor_file_type, file_type; +init_daemon_domain(hal_radio_default) +