2016-10-19 23:39:30 +02:00
|
|
|
# Transition to crash_dump when /system/bin/crash_dump* is executed.
|
|
|
|
# This occurs when the process crashes.
|
2018-09-06 04:11:38 +02:00
|
|
|
# We do not apply this to the su domain to avoid interfering with
|
|
|
|
# tests (b/114136122)
|
|
|
|
domain_auto_trans({ domain userdebug_or_eng(`-su') }, crash_dump_exec, crash_dump);
|
2016-10-19 23:39:30 +02:00
|
|
|
allow domain crash_dump:process sigchld;
|
|
|
|
|
2018-11-08 14:58:13 +01:00
|
|
|
# Allow every process to check the heapprofd.enable properties to determine
|
|
|
|
# whether to load the heap profiling library. This does not necessarily enable
|
|
|
|
# heap profiling, as initialization will fail if it does not have the
|
|
|
|
# necessary SELinux permissions.
|
|
|
|
get_prop(domain, heapprofd_prop);
|
2018-11-27 12:09:14 +01:00
|
|
|
userdebug_or_eng(`can_profile_heap({
|
|
|
|
domain
|
|
|
|
-bpfloader
|
|
|
|
-init
|
|
|
|
-kernel
|
|
|
|
-keystore
|
|
|
|
-llkd
|
|
|
|
-logd
|
|
|
|
-ueventd
|
|
|
|
-vendor_init
|
|
|
|
-vold
|
|
|
|
})')
|
2018-11-08 14:58:13 +01:00
|
|
|
|
2018-11-29 02:50:24 +01:00
|
|
|
# Path resolution access in cgroups.
|
|
|
|
allow domain cgroup:dir search;
|
|
|
|
allow { domain -appdomain } cgroup:dir w_dir_perms;
|
|
|
|
allow { domain -appdomain } cgroup:file w_file_perms;
|
|
|
|
|
|
|
|
# For now, everyone can access core property files
|
|
|
|
# Device specific properties are not granted by default
|
|
|
|
not_compatible_property(`
|
|
|
|
get_prop(domain, core_property_type)
|
|
|
|
get_prop(domain, exported_dalvik_prop)
|
|
|
|
get_prop(domain, exported_ffs_prop)
|
|
|
|
get_prop(domain, exported_system_radio_prop)
|
|
|
|
get_prop(domain, exported2_config_prop)
|
|
|
|
get_prop(domain, exported2_radio_prop)
|
|
|
|
get_prop(domain, exported2_system_prop)
|
|
|
|
get_prop(domain, exported2_vold_prop)
|
|
|
|
get_prop(domain, exported3_default_prop)
|
|
|
|
get_prop(domain, exported3_radio_prop)
|
|
|
|
get_prop(domain, exported3_system_prop)
|
|
|
|
get_prop(domain, vendor_default_prop)
|
|
|
|
')
|
|
|
|
compatible_property_only(`
|
|
|
|
get_prop({coredomain appdomain shell}, core_property_type)
|
|
|
|
get_prop({coredomain appdomain shell}, exported_dalvik_prop)
|
|
|
|
get_prop({coredomain appdomain shell}, exported_ffs_prop)
|
|
|
|
get_prop({coredomain appdomain shell}, exported_system_radio_prop)
|
|
|
|
get_prop({coredomain appdomain shell}, exported2_config_prop)
|
|
|
|
get_prop({coredomain appdomain shell}, exported2_radio_prop)
|
|
|
|
get_prop({coredomain appdomain shell}, exported2_system_prop)
|
|
|
|
get_prop({coredomain appdomain shell}, exported2_vold_prop)
|
|
|
|
get_prop({coredomain appdomain shell}, exported3_default_prop)
|
|
|
|
get_prop({coredomain appdomain shell}, exported3_radio_prop)
|
|
|
|
get_prop({coredomain appdomain shell}, exported3_system_prop)
|
|
|
|
get_prop({domain -coredomain -appdomain}, vendor_default_prop)
|
|
|
|
')
|
|
|
|
|
2016-10-12 23:58:09 +02:00
|
|
|
# Limit ability to ptrace or read sensitive /proc/pid files of processes
|
|
|
|
# with other UIDs to these whitelisted domains.
|
|
|
|
neverallow {
|
|
|
|
domain
|
|
|
|
-vold
|
2018-08-08 01:03:47 +02:00
|
|
|
userdebug_or_eng(`-llkd')
|
2016-10-12 23:58:09 +02:00
|
|
|
-dumpstate
|
2018-03-13 00:21:40 +01:00
|
|
|
userdebug_or_eng(`-incidentd')
|
2016-07-01 21:18:54 +02:00
|
|
|
-storaged
|
2016-10-12 23:58:09 +02:00
|
|
|
-system_server
|
|
|
|
userdebug_or_eng(`-perfprofd')
|
2017-11-09 23:51:26 +01:00
|
|
|
} self:global_capability_class_set sys_ptrace;
|
2017-04-11 17:41:25 +02:00
|
|
|
|
|
|
|
# Limit ability to generate hardware unique device ID attestations to priv_apps
|
|
|
|
neverallow { domain -priv_app } *:keystore_key gen_unique_id;
|
2017-11-02 18:08:30 +01:00
|
|
|
|
2018-01-31 03:14:45 +01:00
|
|
|
neverallow {
|
|
|
|
domain
|
|
|
|
-init
|
|
|
|
-vendor_init
|
|
|
|
userdebug_or_eng(`-domain')
|
|
|
|
} debugfs_tracing_debug:file no_rw_file_perms;
|
|
|
|
|
2018-04-16 16:49:49 +02:00
|
|
|
# System_server owns dropbox data, and init creates/restorecons the directory
|
|
|
|
# Disallow direct access by other processes.
|
|
|
|
neverallow { domain -init -system_server } dropbox_data_file:dir *;
|
|
|
|
neverallow { domain -init -system_server } dropbox_data_file:file ~{ getattr read };
|
2018-05-29 19:41:36 +02:00
|
|
|
|
|
|
|
###
|
|
|
|
# Services should respect app sandboxes
|
|
|
|
neverallow {
|
|
|
|
domain
|
|
|
|
-appdomain
|
|
|
|
-installd # creation of sandbox
|
2018-08-03 00:54:23 +02:00
|
|
|
} { privapp_data_file app_data_file }:dir_file_class_set { create unlink };
|
2018-05-29 19:41:36 +02:00
|
|
|
|
|
|
|
# Only the following processes should be directly accessing private app
|
|
|
|
# directories.
|
|
|
|
neverallow {
|
|
|
|
domain
|
|
|
|
-adbd
|
|
|
|
-appdomain
|
|
|
|
-dexoptanalyzer
|
|
|
|
-installd
|
|
|
|
userdebug_or_eng(`-perfprofd')
|
|
|
|
-profman
|
|
|
|
-runas
|
|
|
|
-system_server
|
2018-08-03 00:54:23 +02:00
|
|
|
} { privapp_data_file app_data_file }:dir *;
|
2018-05-29 19:41:36 +02:00
|
|
|
|
2018-11-16 09:59:23 +01:00
|
|
|
# Only apps should be modifying app data. installd is exempted for
|
2018-05-29 19:41:36 +02:00
|
|
|
# restorecon and package install/uninstall.
|
|
|
|
neverallow {
|
|
|
|
domain
|
|
|
|
-appdomain
|
|
|
|
-installd
|
2018-08-03 00:54:23 +02:00
|
|
|
} { privapp_data_file app_data_file }:dir ~r_dir_perms;
|
2018-05-29 19:41:36 +02:00
|
|
|
|
|
|
|
neverallow {
|
|
|
|
domain
|
|
|
|
-appdomain
|
|
|
|
-installd
|
|
|
|
userdebug_or_eng(`-perfprofd')
|
2018-08-03 00:54:23 +02:00
|
|
|
} { privapp_data_file app_data_file }:file_class_set open;
|
2018-05-29 19:41:36 +02:00
|
|
|
|
|
|
|
neverallow {
|
|
|
|
domain
|
|
|
|
-appdomain
|
|
|
|
-installd # creation of sandbox
|
2018-08-03 00:54:23 +02:00
|
|
|
} { privapp_data_file app_data_file }:dir_file_class_set { create unlink };
|
2018-05-29 19:41:36 +02:00
|
|
|
|
|
|
|
neverallow {
|
|
|
|
domain
|
|
|
|
-installd
|
2018-08-03 00:54:23 +02:00
|
|
|
} { privapp_data_file app_data_file }:dir_file_class_set { relabelfrom relabelto };
|
2018-10-04 19:57:29 +02:00
|
|
|
|
|
|
|
neverallow {
|
|
|
|
domain
|
|
|
|
-appdomain # for oemfs
|
|
|
|
-bootanim # for oemfs
|
|
|
|
-recovery # for /tmp/update_binary in tmpfs
|
|
|
|
} { fs_type -rootfs }:file execute;
|
|
|
|
|
|
|
|
#
|
|
|
|
# Assert that, to the extent possible, we're not loading executable content from
|
|
|
|
# outside the rootfs or /system partition except for a few whitelisted domains.
|
|
|
|
# Executable files loaded from /data is a persistence vector
|
|
|
|
# we want to avoid. See
|
|
|
|
# https://bugs.chromium.org/p/project-zero/issues/detail?id=955 for example.
|
|
|
|
#
|
|
|
|
neverallow {
|
|
|
|
domain
|
|
|
|
-appdomain
|
|
|
|
with_asan(`-asan_extract')
|
|
|
|
-shell
|
|
|
|
userdebug_or_eng(`-su')
|
|
|
|
-system_server_startup # for memfd backed executable regions
|
|
|
|
-webview_zygote
|
|
|
|
-zygote
|
|
|
|
userdebug_or_eng(`-mediaextractor')
|
|
|
|
userdebug_or_eng(`-mediaswcodec')
|
|
|
|
} {
|
|
|
|
file_type
|
|
|
|
-system_file_type
|
|
|
|
-system_lib_file
|
|
|
|
-system_linker_exec
|
|
|
|
-vendor_file_type
|
|
|
|
-exec_type
|
|
|
|
-postinstall_file
|
|
|
|
}:file execute;
|