1# Transition to crash_dump when /system/bin/crash_dump* is executed. 2# This occurs when the process crashes. 3# We do not apply this to the su domain to avoid interfering with 4# tests (b/114136122) 5domain_auto_trans({ domain userdebug_or_eng(`-su') }, crash_dump_exec, crash_dump); 6allow domain crash_dump:process sigchld; 7 8# Allow every process to check the heapprofd.enable properties to determine 9# whether to load the heap profiling library. This does not necessarily enable 10# heap profiling, as initialization will fail if it does not have the 11# necessary SELinux permissions. 12get_prop(domain, heapprofd_prop); 13 14# See private/crash_dump.te 15define(`dumpable_domain',`{ 16 domain 17 -apexd 18 -bpfloader 19 -crash_dump 20 -crosvm # TODO(b/236672526): Remove exception for crosvm 21 -init 22 -kernel 23 -keystore 24 -llkd 25 -logd 26 -ueventd 27 -vendor_init 28 -vold 29}') 30 31# Allow heap profiling by heapprofd. 32# Zygotes are excluded due to potential issues with holding open file 33# descriptors or other state across forks. Other exclusions conflict with 34# neverallows, and are not considered important to profile. 35can_profile_heap({ 36 dumpable_domain 37 -app_zygote 38 -hal_configstore_server 39 -logpersist 40 -recovery 41 -recovery_persist 42 -recovery_refresh 43 -webview_zygote 44 -zygote 45}) 46 47# Allow profiling using perf_event_open by traced_perf. 48can_profile_perf({ 49 dumpable_domain 50 -app_zygote 51 -hal_configstore_server 52 -webview_zygote 53 -zygote 54}) 55 56# Everyone can access the IncFS list of features. 57r_dir_file(domain, sysfs_fs_incfs_features); 58 59# Everyone can access the fuse list of features. 60r_dir_file(domain, sysfs_fs_fuse_features); 61 62# Path resolution access in cgroups. 63allow domain cgroup:dir search; 64allow { domain -appdomain -rs } cgroup:dir w_dir_perms; 65allow { domain -appdomain -rs } cgroup:file w_file_perms; 66 67allow domain cgroup_v2:dir search; 68allow { domain -appdomain -rs } cgroup_v2:dir w_dir_perms; 69allow { domain -appdomain -rs } cgroup_v2:file w_file_perms; 70 71allow domain cgroup_rc_file:dir search; 72allow domain cgroup_rc_file:file r_file_perms; 73allow domain task_profiles_file:file r_file_perms; 74allow domain task_profiles_api_file:file r_file_perms; 75allow domain vendor_task_profiles_file:file r_file_perms; 76 77# Allow all domains to read sys.use_memfd to determine 78# if memfd support can be used if device supports it 79get_prop(domain, use_memfd_prop); 80 81# Read access to sdkextensions props 82get_prop(domain, module_sdkextensions_prop) 83 84# Read access to bq configuration values 85get_prop(domain, bq_config_prop); 86 87# Allow all domains to check whether MTE is set to permissive mode. 88get_prop(domain, permissive_mte_prop); 89 90# Allow ART to be configurable via device_config properties 91# (ART "runs" inside the app process), and MTE bootloader override to be 92# observed by everything 93get_prop(domain, device_config_memory_safety_native_boot_prop); 94get_prop(domain, device_config_memory_safety_native_prop); 95get_prop(domain, device_config_runtime_native_boot_prop); 96get_prop(domain, device_config_runtime_native_prop); 97 98# For now, everyone can access core property files 99# Device specific properties are not granted by default 100not_compatible_property(` 101 # DO NOT ADD ANY PROPERTIES HERE 102 get_prop(domain, core_property_type) 103 get_prop(domain, exported3_system_prop) 104 get_prop(domain, vendor_default_prop) 105') 106compatible_property_only(` 107 # DO NOT ADD ANY PROPERTIES HERE 108 get_prop({coredomain appdomain shell}, core_property_type) 109 get_prop({coredomain appdomain shell}, exported3_system_prop) 110 get_prop({coredomain appdomain shell}, exported_camera_prop) 111 get_prop({coredomain shell}, userspace_reboot_exported_prop) 112 get_prop({coredomain shell}, userspace_reboot_log_prop) 113 get_prop({coredomain shell}, userspace_reboot_test_prop) 114 get_prop({domain -coredomain -appdomain}, vendor_default_prop) 115') 116 117# Public readable properties 118get_prop(domain, aaudio_config_prop) 119get_prop(domain, apexd_select_prop) 120get_prop(domain, arm64_memtag_prop) 121get_prop(domain, bluetooth_config_prop) 122get_prop(domain, bootloader_prop) 123get_prop(domain, build_odm_prop) 124get_prop(domain, build_prop) 125get_prop(domain, build_vendor_prop) 126get_prop(domain, debug_prop) 127get_prop(domain, exported_config_prop) 128get_prop(domain, exported_default_prop) 129get_prop(domain, exported_dumpstate_prop) 130get_prop(domain, exported_secure_prop) 131get_prop(domain, exported_system_prop) 132get_prop(domain, fingerprint_prop) 133get_prop(domain, framework_status_prop) 134get_prop(domain, gwp_asan_prop) 135get_prop(domain, hal_instrumentation_prop) 136get_prop(domain, hw_timeout_multiplier_prop) 137get_prop(domain, init_service_status_prop) 138get_prop(domain, libc_debug_prop) 139get_prop(domain, locale_prop) 140get_prop(domain, logd_prop) 141get_prop(domain, mediadrm_config_prop) 142get_prop(domain, property_service_version_prop) 143get_prop(domain, soc_prop) 144get_prop(domain, socket_hook_prop) 145get_prop(domain, surfaceflinger_prop) 146get_prop(domain, telephony_status_prop) 147get_prop(domain, timezone_prop) 148get_prop({domain -untrusted_app_all -isolated_app_all -ephemeral_app }, userdebug_or_eng_prop) 149get_prop(domain, vendor_socket_hook_prop) 150get_prop(domain, vndk_prop) 151get_prop(domain, vold_status_prop) 152get_prop(domain, vts_config_prop) 153 154# Binder cache properties are world-readable 155get_prop(domain, binder_cache_bluetooth_server_prop) 156get_prop(domain, binder_cache_system_server_prop) 157get_prop(domain, binder_cache_telephony_server_prop) 158 159# Allow access to fsverity keyring. 160allow domain kernel:key search; 161# Allow access to keys in the fsverity keyring that were installed at boot. 162allow domain fsverity_init:key search; 163# For testing purposes, allow access to keys installed with su. 164userdebug_or_eng(` 165 allow domain su:key search; 166') 167 168# Allow access to linkerconfig file 169allow domain linkerconfig_file:dir search; 170allow domain linkerconfig_file:file r_file_perms; 171 172# Allow all processes to check for the existence of the boringssl_self_test_marker files. 173allow domain boringssl_self_test_marker:dir search; 174 175# Allow all processes to read the file_logger property that liblog uses to check if file_logger 176# should be used. 177get_prop(domain, log_file_logger_prop) 178 179# Allow all processes to connect to PRNG seeder daemon. 180unix_socket_connect(domain, prng_seeder, prng_seeder) 181 182# Allow calls to system(3), popen(3), ... 183allow { 184 domain 185 # Except domains that explicitly neverallow it. 186 -kernel 187 -init 188 -vendor_init 189 -app_zygote 190 -webview_zygote 191 -system_server 192 -artd 193 -audioserver 194 -cameraserver 195 -mediadrmserver 196 -mediaextractor 197 -mediametrics 198 -mediaserver 199 -mediatuner 200 -mediatranscoding 201 -ueventd 202 -hal_audio_server 203 -hal_camera_server 204 -hal_cas_server 205 -hal_codec2_server 206 -hal_configstore_server 207 -hal_drm_server 208 -hal_omx_server 209} {shell_exec toolbox_exec}:file rx_file_perms; 210 211# No domains other than a select few can access the misc_block_device. This 212# block device is reserved for OTA use. 213# Do not assert this rule on userdebug/eng builds, due to some devices using 214# this partition for testing purposes. 215neverallow { 216 domain 217 userdebug_or_eng(`-domain') # exclude debuggable builds 218 -fastbootd 219 -hal_bootctl_server 220 -init 221 -uncrypt 222 -update_engine 223 -vendor_init 224 -vendor_misc_writer 225 -vold 226 -recovery 227 -ueventd 228 -mtectrl 229 -misctrl 230} misc_block_device:blk_file { append link relabelfrom rename write open read ioctl lock }; 231 232# Limit ability to ptrace or read sensitive /proc/pid files of processes 233# with other UIDs to these allowlisted domains. 234neverallow { 235 domain 236 -vold 237 userdebug_or_eng(`-llkd') 238 -dumpstate 239 userdebug_or_eng(`-incidentd') 240 userdebug_or_eng(`-profcollectd') 241 userdebug_or_eng(`-simpleperf_boot') 242 -storaged 243 -system_server 244} self:global_capability_class_set sys_ptrace; 245 246# Limit ability to generate hardware unique device ID attestations to priv_apps 247neverallow { domain -priv_app -gmscore_app } *:keystore2_key gen_unique_id; 248neverallow { domain -system_server } *:keystore2_key use_dev_id; 249neverallow { domain -system_server } keystore:keystore2 { clear_ns lock reset unlock }; 250 251neverallow { 252 domain 253 -init 254 -vendor_init 255 userdebug_or_eng(`-domain') 256} debugfs_tracing_debug:file no_rw_file_perms; 257 258# System_server owns dropbox data, and init creates/restorecons the directory 259# Disallow direct access by other processes. 260neverallow { 261 domain 262 -init 263 -system_server 264 userdebug_or_eng(`-dumpstate') 265} dropbox_data_file:dir *; 266neverallow { 267 domain 268 -init 269 -system_server 270 userdebug_or_eng(`-dumpstate') 271} dropbox_data_file:file ~{ getattr read }; 272 273### 274# Services should respect app sandboxes 275neverallow { 276 domain 277 -appdomain 278 -artd # compile secondary dex files 279 -installd # creation of sandbox 280} { privapp_data_file app_data_file }:dir_file_class_set { create unlink }; 281 282# Only the following processes should be directly accessing private app 283# directories. 284neverallow { 285 domain 286 -adbd 287 -appdomain 288 -app_zygote 289 -artd # compile secondary dex files 290 -dexoptanalyzer 291 -installd 292 -profman 293 -rs # spawned by appdomain, so carryover the exception above 294 -runas 295 -system_server 296 -viewcompiler 297 -zygote 298} { privapp_data_file app_data_file }:dir *; 299 300# Only apps should be modifying app data. installd is exempted for 301# restorecon and package install/uninstall. 302neverallow { 303 domain 304 -appdomain 305 -artd # compile secondary dex files 306 -installd 307 -rs # spawned by appdomain, so carryover the exception above 308} { privapp_data_file app_data_file }:dir ~r_dir_perms; 309 310neverallow { 311 domain 312 -appdomain 313 -app_zygote 314 -artd # compile secondary dex files 315 -installd 316 -rs # spawned by appdomain, so carryover the exception above 317} { privapp_data_file app_data_file }:file_class_set open; 318 319neverallow { 320 domain 321 -appdomain 322 -artd # compile secondary dex files 323 -installd # creation of sandbox 324} { privapp_data_file app_data_file }:dir_file_class_set { create unlink }; 325 326neverallow { 327 domain 328 -artd # compile secondary dex files 329 -installd 330} { privapp_data_file app_data_file }:dir_file_class_set { relabelfrom relabelto }; 331 332# The staging directory contains APEX and APK files. It is important to ensure 333# that these files cannot be accessed by other domains to ensure that the files 334# do not change between system_server staging the files and apexd processing 335# the files. 336neverallow { 337 domain 338 -init 339 -system_server 340 -apexd 341 -installd 342 -priv_app 343 -virtualizationmanager 344} staging_data_file:dir *; 345neverallow { 346 domain 347 -init 348 -system_app 349 -system_server 350 -apexd 351 -adbd 352 -kernel 353 -installd 354 -priv_app 355 -shell 356 -virtualizationmanager 357 -crosvm 358} staging_data_file:file *; 359neverallow { domain -init -system_server -installd} staging_data_file:dir no_w_dir_perms; 360# apexd needs the link and unlink permissions, so list every `no_w_file_perms` 361# except for `link` and `unlink`. 362neverallow { domain -init -system_server } staging_data_file:file 363 { append create relabelfrom rename setattr write no_x_file_perms }; 364 365neverallow { 366 domain 367 -appdomain # for oemfs 368 -bootanim # for oemfs 369 -recovery # for /tmp/update_binary in tmpfs 370} { fs_type -rootfs }:file execute; 371 372# 373# Assert that, to the extent possible, we're not loading executable content from 374# outside the rootfs or /system partition except for a few allowlisted domains. 375# Executable files loaded from /data is a persistence vector 376# we want to avoid. See 377# https://bugs.chromium.org/p/project-zero/issues/detail?id=955 for example. 378# 379neverallow { 380 domain 381 -appdomain 382 with_asan(`-asan_extract') 383 -shell 384 userdebug_or_eng(`-su') 385 -system_server_startup # for memfd backed executable regions 386 -app_zygote 387 -webview_zygote 388 -zygote 389 userdebug_or_eng(`-mediaextractor') 390 userdebug_or_eng(`-mediaswcodec') 391} { 392 file_type 393 -system_file_type 394 -system_lib_file 395 -system_linker_exec 396 -vendor_file_type 397 -exec_type 398 -postinstall_file 399}:file execute; 400 401# Only init is allowed to write cgroup.rc file 402neverallow { 403 domain 404 -init 405 -vendor_init 406} cgroup_rc_file:file no_w_file_perms; 407 408# Only authorized processes should be writing to files in /data/dalvik-cache 409neverallow { 410 domain 411 -init # TODO: limit init to relabelfrom for files 412 -zygote 413 -installd 414 -postinstall_dexopt 415 -cppreopts 416 -dex2oat 417 -otapreopt_slot 418 -artd 419} dalvikcache_data_file:file no_w_file_perms; 420 421neverallow { 422 domain 423 -init 424 -installd 425 -postinstall_dexopt 426 -cppreopts 427 -dex2oat 428 -zygote 429 -otapreopt_slot 430 -artd 431} dalvikcache_data_file:dir no_w_dir_perms; 432 433# Only authorized processes should be writing to /data/misc/apexdata/com.android.art as it 434# contains boot class path and system server AOT artifacts following an ART APEX Mainline update. 435neverallow { 436 domain 437 # art-related processes 438 -composd 439 -compos_fd_server 440 -odrefresh 441 -odsign 442 # others 443 -apexd 444 -init 445 -vold_prepare_subdirs 446} apex_art_data_file:file no_w_file_perms; 447 448neverallow { 449 domain 450 # art-related processes 451 -composd 452 -compos_fd_server 453 -odrefresh 454 -odsign 455 # others 456 -apexd 457 -init 458 -vold_prepare_subdirs 459} apex_art_data_file:dir no_w_dir_perms; 460 461# Protect most domains from executing arbitrary content from /data. 462neverallow { 463 domain 464 -appdomain 465} { 466 data_file_type 467 -apex_art_data_file 468 -dalvikcache_data_file 469 -system_data_file # shared libs in apks 470 -apk_data_file 471}:file no_x_file_perms; 472 473# Minimize dac_override and dac_read_search. 474# Instead of granting them it is usually better to add the domain to 475# a Unix group or change the permissions of a file. 476define(`dac_override_allowed', `{ 477 apexd 478 artd 479 dnsmasq 480 dumpstate 481 init 482 installd 483 userdebug_or_eng(`llkd') 484 lmkd 485 migrate_legacy_obb_data 486 netd 487 postinstall_dexopt 488 recovery 489 rss_hwm_reset 490 sdcardd 491 tee 492 ueventd 493 uncrypt 494 vendor_init 495 vold 496 vold_prepare_subdirs 497 zygote 498}') 499neverallow ~dac_override_allowed self:global_capability_class_set dac_override; 500# Since the kernel checks dac_read_search before dac_override, domains that 501# have dac_override should also have dac_read_search to eliminate spurious 502# denials. Some domains have dac_read_search without having dac_override, so 503# this list should be a superset of the one above. 504neverallow ~{ 505 dac_override_allowed 506 traced_perf 507 traced_probes 508 heapprofd 509} self:global_capability_class_set dac_read_search; 510 511# Limit what domains can mount filesystems or change their mount flags. 512# sdcard_type (including vfat and exfat) and fusefs_type are exempt as a larger 513# set of domains need this capability, including device-specific domains. 514neverallow { 515 domain 516 -apexd 517 recovery_only(`-fastbootd') 518 -init 519 -kernel 520 -otapreopt_chroot 521 -recovery 522 -update_engine 523 -vold 524 -zygote 525} { fs_type 526 -sdcard_type 527 -fusefs_type 528}:filesystem { mount remount relabelfrom relabelto }; 529 530enforce_debugfs_restriction(` 531 neverallow { 532 domain userdebug_or_eng(`-init') 533 } { debugfs_type -debugfs_tracing_debug }:filesystem { mount remount relabelfrom relabelto }; 534') 535 536# Limit raw I/O to these allowlisted domains. Do not apply to debug builds. 537neverallow { 538 domain 539 userdebug_or_eng(`-domain') 540 -kernel 541 -gsid 542 -init 543 -recovery 544 -ueventd 545 -uncrypt 546 -tee 547 -hal_bootctl_server 548 -fastbootd 549} self:global_capability_class_set sys_rawio; 550 551# Limit directory operations that doesn't need to do app data isolation. 552neverallow { 553 domain 554 -fsck 555 -init 556 -installd 557 -zygote 558} mirror_data_file:dir *; 559 560# This property is being removed. Remove remaining access. 561neverallow { domain -init -system_server -vendor_init } net_dns_prop:property_service set; 562neverallow { domain -dumpstate -init -system_server -vendor_init } net_dns_prop:file read; 563 564# Only core domains are allowed to access package_manager properties 565neverallow { domain -init -system_server } pm_prop:property_service set; 566neverallow { domain -coredomain } pm_prop:file no_rw_file_perms; 567 568# Do not allow reading the last boot timestamp from system properties 569neverallow { domain -init -system_server -dumpstate } firstboot_prop:file r_file_perms; 570 571# Allow ART to set its config properties in its oneshot boot service, in 572# addition to the common init and vendor_init access. 573neverallow { domain -art_boot -init -vendor_init } dalvik_config_prop:property_service set; 574 575# Kprobes should only be used by adb root 576neverallow { domain -init -vendor_init } debugfs_kprobes:file *; 577 578# On TREBLE devices, most coredomains should not access vendor_files. 579# TODO(b/71553434): Remove exceptions here. 580full_treble_only(` 581 neverallow { 582 coredomain 583 -appdomain 584 -bootanim 585 -crash_dump 586 -heapprofd 587 userdebug_or_eng(`-profcollectd') 588 -init 589 -kernel 590 userdebug_or_eng(`-simpleperf_boot') 591 -traced_perf 592 -ueventd 593 } vendor_file:file { no_w_file_perms no_x_file_perms open }; 594') 595 596# Vendor domains are not permitted to initiate communications to core domain sockets 597full_treble_only(` 598 neverallow_establish_socket_comms({ 599 domain 600 -coredomain 601 -appdomain 602 -socket_between_core_and_vendor_violators 603 }, { 604 coredomain 605 -logd # Logging by writing to logd Unix domain socket is public API 606 -netd # netdomain needs this 607 -mdnsd # netdomain needs this 608 -prng_seeder # Any process using libcrypto needs this 609 userdebug_or_eng(`-su') # communications with su are permitted only on userdebug or eng builds 610 -init 611 -tombstoned # linker to tombstoned 612 -heapprofd 613 -traced 614 -traced_perf 615 }); 616') 617 618full_treble_only(` 619 # Do not allow system components access to /vendor files except for the 620 # ones allowed here. 621 neverallow { 622 coredomain 623 # TODO(b/37168747): clean up fwk access to /vendor 624 -crash_dump 625 -crosvm # loads vendor-specific disk images 626 -init # starts vendor executables 627 -kernel # loads /vendor/firmware 628 -heapprofd 629 userdebug_or_eng(`-profcollectd') 630 -shell 631 userdebug_or_eng(`-simpleperf_boot') 632 -system_executes_vendor_violators 633 -traced_perf # library/binary access for symbolization 634 -ueventd # reads /vendor/ueventd.rc 635 -vold # loads incremental fs driver 636 } { 637 vendor_file_type 638 -same_process_hal_file 639 -vendor_app_file 640 -vendor_apex_file 641 -vendor_apex_metadata_file 642 -vendor_configs_file 643 -vendor_microdroid_file 644 -vendor_service_contexts_file 645 -vendor_framework_file 646 -vendor_idc_file 647 -vendor_keychars_file 648 -vendor_keylayout_file 649 -vendor_overlay_file 650 -vendor_public_framework_file 651 -vendor_public_lib_file 652 -vendor_task_profiles_file 653 -vendor_uuid_mapping_config_file 654 -vndk_sp_file 655 -vendor_aconfig_storage_file 656 }:file *; 657') 658 659# mlsvendorcompat is only for compatibility support for older vendor 660# images, and should not be granted to any domain in current policy. 661# (Every domain is allowed self:fork, so this will trigger if the 662# intsersection of domain & mlsvendorcompat is not empty.) 663neverallow domain mlsvendorcompat:process fork; 664 665# Only init and otapreopt_chroot should be mounting filesystems on locations 666# labeled system or vendor (/product and /vendor respectively). 667neverallow { domain -init -otapreopt_chroot } { system_file_type vendor_file_type }:dir_file_class_set mounton; 668 669# Only allow init and vendor_init to read/write mm_events properties 670# NOTE: dumpstate is allowed to read any system property 671neverallow { 672 domain 673 -init 674 -vendor_init 675 -dumpstate 676} mm_events_config_prop:file no_rw_file_perms; 677 678# Allow the tracing daemon and callstack sampler to use kallsyms to symbolize 679# kernel traces. Addresses are not disclosed, they are repalced with symbol 680# names (if available). Traces don't disclose KASLR. 681neverallow { 682 domain 683 -init 684 userdebug_or_eng(`-profcollectd') 685 -vendor_init 686 userdebug_or_eng(`-simpleperf_boot') 687 -traced_probes 688 -traced_perf 689} proc_kallsyms:file { open read }; 690 691# debugfs_kcov type is not included in this neverallow statement since the KCOV 692# tool uses it for kernel fuzzing. 693# vendor_modprobe is also exempted since the kernel modules it loads may create 694# debugfs files in its context. 695enforce_debugfs_restriction(` 696 neverallow { 697 domain 698 -vendor_modprobe 699 userdebug_or_eng(` 700 -init 701 -hal_dumpstate 702 -incidentd 703 ') 704 } { debugfs_type 705 userdebug_or_eng(`-debugfs_kcov') 706 -tracefs_type 707 }:file no_rw_file_perms; 708') 709 710# Restrict write access to etm sysfs interface. 711neverallow { domain -ueventd -vendor_init } sysfs_devices_cs_etm:file no_w_file_perms; 712 713# Restrict CAP_PERFMON. 714neverallow { 715 domain 716 -init 717 -vendor_modprobe 718 userdebug_or_eng(`-simpleperf_boot') 719 -kernel 720 -uprobestats 721} self:capability2 perfmon; 722 723# Restrict direct access to shell owned files. The /data/local/tmp directory is 724# untrustworthy, and non-allowed domains should not be trusting any content in 725# those directories. We allow shell files to be passed around by file 726# descriptor, but not directly opened. 727# artd doesn't need to access /data/local/tmp, but it needs to access 728# /data/{user,user_de}/<user-id>/com.android.shell/... for compiling secondary 729# dex files. 730neverallow { 731 domain 732 -adbd 733 -appdomain 734 -artd 735 -dumpstate 736 -installd 737 userdebug_or_eng(`-uncrypt') 738 userdebug_or_eng(`-virtualizationmanager') 739 userdebug_or_eng(`-virtualizationservice') 740 userdebug_or_eng(`-crosvm') 741} shell_data_file:file open; 742 743# In addition to the symlink reading restrictions above, restrict 744# write access to shell owned directories. The /data/local/tmp 745# directory is untrustworthy, and non-allowed domains should 746# not be trusting any content in those directories. 747# artd doesn't need to access /data/local/tmp, but it needs to access 748# /data/{user,user_de}/<user-id>/com.android.shell/... for compiling secondary 749# dex files. 750neverallow { 751 domain 752 -adbd 753 -artd 754 -dumpstate 755 -installd 756 -init 757 -shell 758 -vold 759} shell_data_file:dir no_w_dir_perms; 760 761neverallow { 762 domain 763 -adbd 764 -appdomain 765 -artd 766 -dumpstate 767 -init 768 -installd 769 -simpleperf_app_runner 770 -system_server # why? 771 userdebug_or_eng(`-uncrypt') 772} shell_data_file:dir open; 773 774neverallow { 775 domain 776 -adbd 777 -appdomain 778 -artd 779 -dumpstate 780 -init 781 -installd 782 -simpleperf_app_runner 783 -system_server # why? 784 userdebug_or_eng(`-uncrypt') 785 userdebug_or_eng(`-virtualizationmanager') 786 userdebug_or_eng(`-crosvm') 787} shell_data_file:dir search; 788 789# respect system_app sandboxes 790neverallow { 791 domain 792 -appdomain 793 -artd # compile secondary dex files 794 -system_server #populate com.android.providers.settings/databases/settings.db. 795 -installd # creation of app sandbox 796 -traced_probes # resolve inodes for i/o tracing. 797 # only needs open and read, the rest is neverallow in 798 # traced_probes.te. 799} system_app_data_file:dir_file_class_set { create unlink open }; 800neverallow { 801 isolated_app_all 802 ephemeral_app 803 priv_app 804 sdk_sandbox_all 805 untrusted_app_all 806} system_app_data_file:dir_file_class_set { create unlink open }; 807 808neverallow { domain -init } mtectrl:process { dyntransition transition }; 809 810# For now, don't allow processes other than gmscore to access /data/misc_ce/<userid>/checkin 811neverallow { domain -gmscore_app -init -vold_prepare_subdirs } checkin_data_file:{dir file} *; 812 813# Do not allow write access to aconfig flag value files except init and aconfigd 814neverallow { domain -init -aconfigd } aconfig_storage_metadata_file:dir *; 815neverallow { domain -init -aconfigd } aconfig_storage_metadata_file:file no_w_file_perms; 816