149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale#
249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# System Server aka system_server spawned by zygote.
349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Most of the framework services run in this process.
449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale#
549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaletypeattribute system_server coredomain;
749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaletypeattribute system_server mlstrustedsubject;
849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Define a type for tmpfs-backed ashmem regions.
1049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaletmpfs_domain(system_server)
1149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
1249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Create a socket for connections from crash_dump.
1349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaletype_transition system_server system_data_file:sock_file system_ndebug_socket "ndebugsocket";
1449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
1549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server zygote_tmpfs:file read;
1649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
1749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# For art.
1849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server dalvikcache_data_file:dir r_dir_perms;
1949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server dalvikcache_data_file:file r_file_perms;
2049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
2149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# When running system server under --invoke-with, we'll try to load the boot image under the
2249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# system server domain, following links to the system partition.
2349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalewith_asan(`allow system_server dalvikcache_data_file:lnk_file r_file_perms;')
2449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
2549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# /data/resource-cache
2649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server resourcecache_data_file:file r_file_perms;
2749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server resourcecache_data_file:dir r_dir_perms;
2849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
2949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# ptrace to processes in the same domain for debugging crashes.
3049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server self:process ptrace;
3149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
3249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Child of the zygote.
3349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server zygote:fd use;
3449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server zygote:process sigchld;
3549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
3649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# May kill zygote on crashes.
3749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server zygote:process sigkill;
3849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server crash_dump:process sigkill;
3949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server webview_zygote:process sigkill;
4049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
4149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Read /system/bin/app_process.
4249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server zygote_exec:file r_file_perms;
4349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
4449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Needed to close the zygote socket, which involves getopt / getattr
4549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server zygote:unix_stream_socket { getopt getattr };
4649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
4749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# system server gets network and bluetooth permissions.
4849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalenet_domain(system_server)
4949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# in addition to ioctls whitelisted for all domains, also allow system_server
5049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# to use privileged ioctls commands. Needed to set up VPNs.
5149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallowxperm system_server self:udp_socket ioctl priv_sock_ioctls;
5249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalebluetooth_domain(system_server)
5349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
5449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# These are the capabilities assigned by the zygote to the
5549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# system server.
5649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server self:global_capability_class_set {
5749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale    ipc_lock
5849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale    kill
5949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale    net_admin
6049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale    net_bind_service
6149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale    net_broadcast
6249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale    net_raw
6349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale    sys_boot
6449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale    sys_nice
6549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale    sys_ptrace
6649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale    sys_time
6749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale    sys_tty_config
6849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale};
6949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
7049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalewakelock_use(system_server)
7149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
7249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Trigger module auto-load.
7349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server kernel:system module_request;
7449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
7549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Allow alarmtimers to be set
7649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server self:global_capability2_class_set wake_alarm;
7749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
7849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Create and share netlink_netfilter_sockets for tetheroffload.
7949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server self:netlink_netfilter_socket create_socket_perms_no_ioctl;
8049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
8149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Use netlink uevent sockets.
8249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server self:netlink_kobject_uevent_socket create_socket_perms_no_ioctl;
8349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
8449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Use generic netlink sockets.
8549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server self:netlink_socket create_socket_perms_no_ioctl;
8649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server self:netlink_generic_socket create_socket_perms_no_ioctl;
8749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
8849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# libvintf reads the kernel config to verify vendor interface compatibility.
8949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server config_gz:file { read open };
9049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
9149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Use generic "sockets" where the address family is not known
9249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# to the kernel. The ioctl permission is specifically omitted here, but may
9349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# be added to device specific policy along with the ioctl commands to be
9449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# whitelisted.
9549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server self:socket create_socket_perms_no_ioctl;
9649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
9749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Set and get routes directly via netlink.
9849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server self:netlink_route_socket nlmsg_write;
9949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
10049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Kill apps.
10149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server appdomain:process { getpgid sigkill signal };
10249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
10349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Set scheduling info for apps.
10449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server appdomain:process { getsched setsched };
10549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server audioserver:process { getsched setsched };
10649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server hal_audio:process { getsched setsched };
10749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server hal_bluetooth:process { getsched setsched };
108763dcc317556b9c9d3137641d2ed86232bb189f9Ian Pedowitzallow system_server mediacodec:process { getsched setsched };
10949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server cameraserver:process { getsched setsched };
11049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server hal_camera:process { getsched setsched };
11149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server mediaserver:process { getsched setsched };
11249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server bootanim:process { getsched setsched };
11349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
11449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Allow system_server to write to /proc/<pid>/timerslack_ns
11549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server appdomain:file w_file_perms;
11649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server audioserver:file w_file_perms;
117763dcc317556b9c9d3137641d2ed86232bb189f9Ian Pedowitzallow system_server mediacodec:file w_file_perms;
11849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server cameraserver:file w_file_perms;
11949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server hal_audio_server:file w_file_perms;
12049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
12149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Read /proc/pid data for all domains. This is used by ProcessCpuTracker
12249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# within system_server to keep track of memory and CPU usage for
12349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# all processes on the device. In addition, /proc/pid files access is needed
12449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# for dumping stack traces of native processes.
12549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaler_dir_file(system_server, domain)
12649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
12749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Read/Write to /proc/net/xt_qtaguid/ctrl and and /dev/xt_qtaguid.
12849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server qtaguid_proc:file rw_file_perms;
12949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server qtaguid_device:chr_file rw_file_perms;
13049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
13149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Write /proc/uid_cputime/remove_uid_range.
13249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server proc_uid_cputime_removeuid:file { w_file_perms getattr };
13349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
13449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Write /proc/uid_procstat/set.
13549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server proc_uid_procstat_set:file { w_file_perms getattr };
13649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
13749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Write to /proc/sysrq-trigger.
13849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server proc_sysrq:file rw_file_perms;
13949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
14049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Read /sys/kernel/debug/wakeup_sources.
14149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server debugfs:file r_file_perms;
14249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server debugfs_wakeup_sources:file r_file_perms;
14349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
14449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Delete /data/misc/stats-data/ and /data/misc/stats-service/ directories.
14549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server stats_data_file:dir { open read remove_name search write };
14649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server stats_data_file:file unlink;
14749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
14849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# The DhcpClient and WifiWatchdog use packet_sockets
14949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server self:packet_socket create_socket_perms_no_ioctl;
15049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
15149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# NetworkDiagnostics requires explicit bind() calls to ping sockets. These aren't actually the same
15249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# as raw sockets, but the kernel doesn't yet distinguish between the two.
15349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server node:rawip_socket node_bind;
15449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
15549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# 3rd party VPN clients require a tun_socket to be created
15649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server self:tun_socket create_socket_perms_no_ioctl;
15749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
15849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Talk to init and various daemons via sockets.
15949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleunix_socket_connect(system_server, lmkd, lmkd)
16049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleunix_socket_connect(system_server, mtpd, mtp)
16149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleunix_socket_connect(system_server, netd, netd)
16249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleunix_socket_connect(system_server, zygote, zygote)
16349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleunix_socket_connect(system_server, racoon, racoon)
16449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleunix_socket_connect(system_server, uncrypt, uncrypt)
16549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
16649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Communicate over a socket created by surfaceflinger.
16749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server surfaceflinger:unix_stream_socket { read write setopt };
16849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
16949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Communicate over a socket created by webview_zygote.
17049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server webview_zygote:unix_stream_socket { read write connectto setopt };
17149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
17249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Perform Binder IPC.
17349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalebinder_use(system_server)
17449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalebinder_call(system_server, appdomain)
17549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalebinder_call(system_server, binderservicedomain)
17649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalebinder_call(system_server, dumpstate)
17749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalebinder_call(system_server, fingerprintd)
17849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalebinder_call(system_server, gatekeeperd)
17949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalebinder_call(system_server, installd)
18049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalebinder_call(system_server, incidentd)
18149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalebinder_call(system_server, netd)
18249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalebinder_call(system_server, statsd)
18349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalebinder_call(system_server, storaged)
18449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalebinder_call(system_server, vold)
18549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalebinder_call(system_server, wificond)
18649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalebinder_call(system_server, wpantund)
18749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalebinder_service(system_server)
18849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
18949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Use HALs
19049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_allocator)
19149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_authsecret)
19249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_broadcastradio)
19349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_configstore)
19449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_contexthub)
19549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_fingerprint)
19649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_gnss)
19749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_graphics_allocator)
19849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_health)
19949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_ir)
20049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_light)
20149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_memtrack)
20249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_neuralnetworks)
20349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_oemlock)
20449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server hal_codec2_hwservice:hwservice_manager find;
20549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server hal_omx_hwservice:hwservice_manager find;
20649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server hidl_token_hwservice:hwservice_manager find;
20749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_power)
20849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_sensors)
20949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_tetheroffload)
21049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_thermal)
21149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_tv_cec)
21249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_tv_input)
21349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_usb)
21449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_usb_gadget)
21549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_vibrator)
21649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_vr)
21749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_weaver)
21849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_wifi)
21949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_wifi_hostapd)
22049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_wifi_offload)
22149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalehal_client_domain(system_server, hal_wifi_supplicant)
22249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
22349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalebinder_call(system_server, mediacodec)
22449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
22549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Talk with graphics composer fences
22649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server hal_graphics_composer:fd use;
22749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
22849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Use RenderScript always-passthrough HAL
22949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server hal_renderscript_hwservice:hwservice_manager find;
23049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
23149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Offer HwBinder services
23249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleadd_hwservice(system_server, fwk_scheduler_hwservice)
23349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleadd_hwservice(system_server, fwk_sensor_hwservice)
23449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
23549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Talk to tombstoned to get ANR traces.
23649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleunix_socket_connect(system_server, tombstoned_intercept, tombstoned)
23749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
23849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# List HAL interfaces to get ANR traces.
23949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server hwservicemanager:hwservice_manager list;
24049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
24149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Send signals to trigger ANR traces.
24249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server {
24349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  # This is derived from the list that system server defines as interesting native processes
24449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  # to dump during ANRs or watchdog aborts, defined in NATIVE_STACKS_OF_INTEREST in
24549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  # frameworks/base/services/core/java/com/android/server/Watchdog.java.
24649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  audioserver
24749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  cameraserver
24849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  drmserver
24949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  inputflinger
25049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  mediadrmserver
25149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  mediaextractor
25249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  mediaserver
25349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  mediametrics
25449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  sdcardd
25549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  statsd
25649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  surfaceflinger
25749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
25849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  # This list comes from HAL_INTERFACES_OF_INTEREST in
25949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  # frameworks/base/services/core/java/com/android/server/Watchdog.java.
26049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  hal_audio_server
26149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  hal_bluetooth_server
26249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  hal_camera_server
26349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  hal_graphics_composer_server
26449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  hal_sensors_server
26549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  hal_vr_server
26649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  mediacodec # TODO(b/36375899): hal_omx_server
26749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale}:process { signal };
26849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
26949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Use sockets received over binder from various services.
27049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server audioserver:tcp_socket rw_socket_perms;
27149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server audioserver:udp_socket rw_socket_perms;
27249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server mediaserver:tcp_socket rw_socket_perms;
27349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server mediaserver:udp_socket rw_socket_perms;
27449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
27549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Use sockets received over binder from various services.
27649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server mediadrmserver:tcp_socket rw_socket_perms;
27749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server mediadrmserver:udp_socket rw_socket_perms;
27849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
27949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Get file context
28049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server file_contexts_file:file r_file_perms;
28149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# access for mac_permissions
28249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server mac_perms_file: file r_file_perms;
28349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Check SELinux permissions.
28449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleselinux_check_access(system_server)
28549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
28649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server sysfs_type:dir search;
28749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
28849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaler_dir_file(system_server, sysfs_android_usb)
28949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server sysfs_android_usb:file w_file_perms;
29049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
29149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaler_dir_file(system_server, sysfs_ipv4)
29249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server sysfs_ipv4:file w_file_perms;
29349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
29449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaler_dir_file(system_server, sysfs_rtc)
29549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaler_dir_file(system_server, sysfs_switch)
29649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaler_dir_file(system_server, sysfs_wakeup_reasons)
29749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
29849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server sysfs_nfc_power_writable:file rw_file_perms;
29949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server sysfs_mac_address:file r_file_perms;
30049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server sysfs_power:dir search;
30149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server sysfs_power:file rw_file_perms;
30249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server sysfs_thermal:dir search;
30349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server sysfs_thermal:file r_file_perms;
30449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
30549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# TODO: Remove when HALs are forced into separate processes
30649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server sysfs_vibrator:file { write append };
30749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
30849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# TODO: added to match above sysfs rule. Remove me?
30949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server sysfs_usb:file w_file_perms;
31049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
31149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Access devices.
31249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server device:dir r_dir_perms;
31349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server mdns_socket:sock_file rw_file_perms;
31449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server alarm_device:chr_file rw_file_perms;
31549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server gpu_device:chr_file rw_file_perms;
31649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server iio_device:chr_file rw_file_perms;
31749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server input_device:dir r_dir_perms;
31849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server input_device:chr_file rw_file_perms;
31949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server radio_device:chr_file r_file_perms;
32049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server tty_device:chr_file rw_file_perms;
32149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server usbaccessory_device:chr_file rw_file_perms;
32249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server video_device:dir r_dir_perms;
32349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server video_device:chr_file rw_file_perms;
32449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server adbd_socket:sock_file rw_file_perms;
32549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server rtc_device:chr_file rw_file_perms;
32649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server audio_device:dir r_dir_perms;
32749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
32849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# write access needed for MIDI
32949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server audio_device:chr_file rw_file_perms;
33049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
33149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# tun device used for 3rd party vpn apps
33249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server tun_device:chr_file rw_file_perms;
33349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
33449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Manage system data files.
33549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server system_data_file:dir create_dir_perms;
33649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server system_data_file:notdevfile_class_set create_file_perms;
33749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server keychain_data_file:dir create_dir_perms;
33849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server keychain_data_file:file create_file_perms;
33949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server keychain_data_file:lnk_file create_file_perms;
34049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
34149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Manage /data/app.
34249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server apk_data_file:dir create_dir_perms;
34349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server apk_data_file:{ file lnk_file } { create_file_perms link };
34449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server apk_tmp_file:dir create_dir_perms;
34549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server apk_tmp_file:file create_file_perms;
34649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
34749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Access /vendor/{app,framework,overlay}
34849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaler_dir_file(system_server, vendor_app_file)
34949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaler_dir_file(system_server, vendor_framework_file)
35049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaler_dir_file(system_server, vendor_overlay_file)
35149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
35249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Manage /data/app-private.
35349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server apk_private_data_file:dir create_dir_perms;
35449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server apk_private_data_file:file create_file_perms;
35549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server apk_private_tmp_file:dir create_dir_perms;
35649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server apk_private_tmp_file:file create_file_perms;
35749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
35849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Manage files within asec containers.
35949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server asec_apk_file:dir create_dir_perms;
36049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server asec_apk_file:file create_file_perms;
36149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server asec_public_file:file create_file_perms;
36249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
36349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Manage /data/anr.
36449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale#
36549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# TODO: Some of these permissions can be withdrawn once we've switched to the
36649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# new stack dumping mechanism, see b/32064548 and the rules below. In particular,
36749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# the system_server should never need to create a new anr_data_file:file or write
36849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# to one, but it will still need to read and append to existing files.
36949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server anr_data_file:dir create_dir_perms;
37049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server anr_data_file:file create_file_perms;
37149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
37249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# New stack dumping scheme : request an output FD from tombstoned via a unix
37349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# domain socket.
37449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale#
37549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Allow system_server to connect and write to the tombstoned java trace socket in
37649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# order to dump its traces. Also allow the system server to write its traces to
37749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# dumpstate during bugreport capture and incidentd during incident collection.
37849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleunix_socket_connect(system_server, tombstoned_java_trace, tombstoned)
37949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server tombstoned:fd use;
38049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server dumpstate:fifo_file append;
38149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server incidentd:fifo_file append;
38249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
38349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Read /data/misc/incidents - only read. The fd will be sent over binder,
38449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# with no DAC access to it, for dropbox to read.
38549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server incident_data_file:file read;
38649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
38749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Allow dropbox to read /data/misc/perfetto-traces. Only the fd is sent over
38849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# binder.
38949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server perfetto_traces_data_file:file read;
39049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server perfetto:fd use;
39149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
39249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Allow dropbox to read /data/misc/perfprofd. Only the fd is sent over binder.
39349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleuserdebug_or_eng(`
39449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  allow system_server perfprofd_data_file:file read;
39549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  allow system_server perfprofd:fd use;
39649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale')
39749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
39849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Manage /data/backup.
39949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server backup_data_file:dir create_dir_perms;
40049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server backup_data_file:file create_file_perms;
40149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
40249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Write to /data/system/heapdump
40349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server heapdump_data_file:dir rw_dir_perms;
40449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server heapdump_data_file:file create_file_perms;
40549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
40649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Manage /data/misc/adb.
40749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server adb_keys_file:dir create_dir_perms;
40849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server adb_keys_file:file create_file_perms;
40949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
41049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Manage /data/misc/network_watchlist
41149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server network_watchlist_data_file:dir create_dir_perms;
41249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server network_watchlist_data_file:file create_file_perms;
41349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
41449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Manage /data/misc/sms.
41549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# TODO:  Split into a separate type?
41649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server radio_data_file:dir create_dir_perms;
41749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server radio_data_file:file create_file_perms;
41849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
41949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Manage /data/misc/systemkeys.
42049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server systemkeys_data_file:dir create_dir_perms;
42149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server systemkeys_data_file:file create_file_perms;
42249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
42349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Manage /data/misc/textclassifier.
42449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server textclassifier_data_file:dir create_dir_perms;
42549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server textclassifier_data_file:file create_file_perms;
42649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
42749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Access /data/tombstones.
42849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server tombstone_data_file:dir r_dir_perms;
42949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server tombstone_data_file:file r_file_perms;
43049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
43149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Manage /data/misc/vpn.
43249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server vpn_data_file:dir create_dir_perms;
43349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server vpn_data_file:file create_file_perms;
43449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
43549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Manage /data/misc/wifi.
43649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server wifi_data_file:dir create_dir_perms;
43749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server wifi_data_file:file create_file_perms;
43849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
43949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Manage /data/misc/zoneinfo.
44049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server zoneinfo_data_file:dir create_dir_perms;
44149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server zoneinfo_data_file:file create_file_perms;
44249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
44349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Walk /data/data subdirectories.
44449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Types extracted from seapp_contexts type= fields.
44549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server { system_app_data_file bluetooth_data_file nfc_data_file radio_data_file shell_data_file app_data_file }:dir { getattr read search };
44649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Also permit for unlabeled /data/data subdirectories and
44749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# for unlabeled asec containers on upgrades from 4.2.
44849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server unlabeled:dir r_dir_perms;
44949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Read pkg.apk file before it has been relabeled by vold.
45049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server unlabeled:file r_file_perms;
45149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
45249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Populate com.android.providers.settings/databases/settings.db.
45349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server system_app_data_file:dir create_dir_perms;
45449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server system_app_data_file:file create_file_perms;
45549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
45649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Receive and use open app data files passed over binder IPC.
45749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Types extracted from seapp_contexts type= fields.
45849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server { system_app_data_file bluetooth_data_file nfc_data_file radio_data_file shell_data_file app_data_file }:file { getattr read write append };
45949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
46049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Access to /data/media for measuring disk usage.
46149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server media_rw_data_file:dir { search getattr open read };
46249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
46349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Receive and use open /data/media files passed over binder IPC.
46449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Also used for measuring disk usage.
46549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server media_rw_data_file:file { getattr read write append };
46649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
46749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Relabel apk files.
46849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server { apk_tmp_file apk_private_tmp_file }:{ dir file } { relabelfrom relabelto };
46949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server { apk_data_file apk_private_data_file }:{ dir file } { relabelfrom relabelto };
47049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
47149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Relabel wallpaper.
47249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server system_data_file:file relabelfrom;
47349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server wallpaper_file:file relabelto;
47449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server wallpaper_file:file { rw_file_perms rename unlink };
47549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
47649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Backup of wallpaper imagery uses temporary hard links to avoid data churn
47749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server { system_data_file wallpaper_file }:file link;
47849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
47949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# ShortcutManager icons
48049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server system_data_file:dir relabelfrom;
48149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server shortcut_manager_icons:dir { create_dir_perms relabelto };
48249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server shortcut_manager_icons:file create_file_perms;
48349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
48449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Manage ringtones.
48549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server ringtone_file:dir { create_dir_perms relabelto };
48649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server ringtone_file:file create_file_perms;
48749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
48849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Relabel icon file.
48949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server icon_file:file relabelto;
49049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server icon_file:file { rw_file_perms unlink };
49149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
49249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# FingerprintService.java does a restorecon of the directory /data/system/users/[0-9]+/fpdata(/.*)?
49349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server system_data_file:dir relabelfrom;
49449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
49549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Property Service write
49649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, system_prop)
49749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, exported_system_prop)
49849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, exported2_system_prop)
49949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, exported3_system_prop)
50049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, safemode_prop)
50149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, dhcp_prop)
50249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, net_radio_prop)
50349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, net_dns_prop)
50449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, system_radio_prop)
50549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, exported_system_radio_prop)
50649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, debug_prop)
50749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, powerctl_prop)
50849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, fingerprint_prop)
50949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, exported_fingerprint_prop)
51049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, device_logging_prop)
51149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, dumpstate_options_prop)
51249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, overlay_prop)
51349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, exported_overlay_prop)
51449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, pm_prop)
51549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, exported_pm_prop)
51649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleuserdebug_or_eng(`set_prop(system_server, wifi_log_prop)')
51749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
51849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# ctl interface
51949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, ctl_default_prop)
52049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, ctl_bugreport_prop)
52149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
52249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# cppreopt property
52349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, cppreopt_prop)
52449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
52549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# BootReceiver to read ro.boot.bootreason
52649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleget_prop(system_server, bootloader_boot_reason_prop)
52749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# PowerManager to read persist.sys.boot.reason
52849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleget_prop(system_server, last_boot_reason_prop)
52949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
53049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Collect metrics on boot time created by init
53149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleget_prop(system_server, boottime_prop)
53249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
53349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Read device's serial number from system properties
53449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleget_prop(system_server, serialno_prop)
53549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
53649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Read/write the property which keeps track of whether this is the first start of system_server
53749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleset_prop(system_server, firstboot_prop)
53849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
53949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Create a socket for connections from debuggerd.
54049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server system_ndebug_socket:sock_file create_file_perms;
54149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
54249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Manage cache files.
54349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server cache_file:lnk_file r_file_perms;
54449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server { cache_file cache_recovery_file }:dir { relabelfrom create_dir_perms };
54549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server { cache_file cache_recovery_file }:file { relabelfrom create_file_perms };
54649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server { cache_file cache_recovery_file }:fifo_file create_file_perms;
54749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
54849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server system_file:dir r_dir_perms;
54949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server system_file:lnk_file r_file_perms;
55049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
55149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# LocationManager(e.g, GPS) needs to read and write
55249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# to uart driver and ctrl proc entry
55349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server gps_control:file rw_file_perms;
55449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
55549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Allow system_server to use app-created sockets and pipes.
55649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server appdomain:{ tcp_socket udp_socket } { getattr getopt setopt read write shutdown };
55749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server appdomain:{ fifo_file unix_stream_socket } { getattr read write };
55849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
55949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# BackupManagerService needs to manipulate backup data files
56049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server cache_backup_file:dir rw_dir_perms;
56149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server cache_backup_file:file create_file_perms;
56249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# LocalTransport works inside /cache/backup
56349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server cache_private_backup_file:dir create_dir_perms;
56449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server cache_private_backup_file:file create_file_perms;
56549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
56649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Allow system to talk to usb device
56749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server usb_device:chr_file rw_file_perms;
56849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server usb_device:dir r_dir_perms;
56949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
57049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Read from HW RNG (needed by EntropyMixer).
57149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server hw_random_device:chr_file r_file_perms;
57249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
57349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Read and delete files under /dev/fscklogs.
57449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaler_dir_file(system_server, fscklogs)
57549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server fscklogs:dir { write remove_name };
57649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server fscklogs:file unlink;
57749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
57849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# logd access, system_server inherit logd write socket
57949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# (urge is to deprecate this long term)
58049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server zygote:unix_dgram_socket write;
58149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
58249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Read from log daemon.
58349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleread_logd(system_server)
58449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleread_runtime_log_tags(system_server)
58549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
58649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Be consistent with DAC permissions. Allow system_server to write to
58749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# /sys/module/lowmemorykiller/parameters/adj
58849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# /sys/module/lowmemorykiller/parameters/minfree
58949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server sysfs_lowmemorykiller:file { getattr w_file_perms };
59049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
59149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Read /sys/fs/pstore/console-ramoops
59249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Don't worry about overly broad permissions for now, as there's
59349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# only one file in /sys/fs/pstore
59449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server pstorefs:dir r_dir_perms;
59549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server pstorefs:file r_file_perms;
59649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
59749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# /sys access
59849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server sysfs_zram:dir search;
59949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server sysfs_zram:file r_file_perms;
60049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
60149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleadd_service(system_server, system_server_service);
60249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server audioserver_service:service_manager find;
60349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server batteryproperties_service:service_manager find;
60449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server cameraserver_service:service_manager find;
60549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server drmserver_service:service_manager find;
60649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server dumpstate_service:service_manager find;
60749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server fingerprintd_service:service_manager find;
60849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server hal_fingerprint_service:service_manager find;
60949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server gatekeeper_service:service_manager find;
61049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server incident_service:service_manager find;
61149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server installd_service:service_manager find;
61249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server keystore_service:service_manager find;
61349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server mediaserver_service:service_manager find;
61449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server mediametrics_service:service_manager find;
61549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server mediaextractor_service:service_manager find;
61649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server mediacodec_service:service_manager find;
61749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server mediadrmserver_service:service_manager find;
61849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server netd_service:service_manager find;
61949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server nfc_service:service_manager find;
62049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server radio_service:service_manager find;
62149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server stats_service:service_manager find;
62249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server storaged_service:service_manager find;
62349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server surfaceflinger_service:service_manager find;
62449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server vold_service:service_manager find;
62549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server wificond_service:service_manager find;
62649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
62749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleadd_service(system_server, batteryproperties_service)
62849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
62949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server keystore:keystore_key {
63049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale	get_state
63149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale	get
63249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale	insert
63349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale	delete
63449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale	exist
63549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale	list
63649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale	reset
63749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale	password
63849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale	lock
63949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale	unlock
64049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale	is_empty
64149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale	sign
64249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale	verify
64349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale	grant
64449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale	duplicate
64549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale	clear_uid
64649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale	add_auth
64749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale	user_changed
64849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale};
64949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
65049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Allow system server to search and write to the persistent factory reset
65149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# protection partition. This block device does not get wiped in a factory reset.
65249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server block_device:dir search;
65349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server frp_block_device:blk_file rw_file_perms;
65449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
65549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Clean up old cgroups
65649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server cgroup:dir { remove_name rmdir };
65749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
65849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# /oem access
65949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaler_dir_file(system_server, oemfs)
66049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
66149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Allow resolving per-user storage symlinks
66249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server { mnt_user_file storage_file }:dir { getattr search };
66349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server { mnt_user_file storage_file }:lnk_file { getattr read };
66449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
66549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Allow statfs() on storage devices, which happens fast enough that
66649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# we shouldn't be killed during unsafe removal
66749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server sdcard_type:dir { getattr search };
66849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
66949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Traverse into expanded storage
67049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server mnt_expand_file:dir r_dir_perms;
67149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
67249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Allow system process to relabel the fingerprint directory after mkdir
67349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# and delete the directory and files when no longer needed
67449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server fingerprintd_data_file:dir { r_dir_perms remove_name rmdir relabelto write };
67549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server fingerprintd_data_file:file { getattr unlink };
67649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
67749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Allow system process to read network MAC address
67849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server sysfs_mac_address:file r_file_perms;
67949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
68049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleuserdebug_or_eng(`
68149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  # Allow system server to create and write method traces in /data/misc/trace.
68249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  allow system_server method_trace_data_file:dir w_dir_perms;
68349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  allow system_server method_trace_data_file:file { create w_file_perms };
68449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
68549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  # Allow system server to read dmesg
68649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  allow system_server kernel:system syslog_read;
68749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
68849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  # Allow writing and removing window traces in /data/misc/wmtrace.
68949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  allow system_server wm_trace_data_file:dir rw_dir_perms;
69049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  allow system_server wm_trace_data_file:file { getattr setattr create unlink w_file_perms };
69149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale')
69249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
69349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# For AppFuse.
69449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server vold:fd use;
69549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server fuse_device:chr_file { read write ioctl getattr };
69649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server app_fuse_file:dir rw_dir_perms;
69749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server app_fuse_file:file { read write open getattr append };
69849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
69949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# For configuring sdcardfs
70049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server configfs:dir { create_dir_perms };
70149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server configfs:file { getattr open create unlink write };
70249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
70349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Connect to adbd and use a socket transferred from it.
70449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Used for e.g. jdwp.
70549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server adbd:unix_stream_socket connectto;
70649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server adbd:fd use;
70749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server adbd:unix_stream_socket { getattr getopt ioctl read write shutdown };
70849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
70949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Allow invoking tools like "timeout"
71049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server toolbox_exec:file rx_file_perms;
71149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
71249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Postinstall
71349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale#
71449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# For OTA dexopt, allow calls coming from postinstall.
71549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalebinder_call(system_server, postinstall)
71649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
71749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server postinstall:fifo_file write;
71849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server update_engine:fd use;
71949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server update_engine:fifo_file write;
72049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
72149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Access to /data/preloads
72249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server preloads_data_file:file { r_file_perms unlink };
72349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server preloads_data_file:dir { r_dir_perms write remove_name rmdir };
72449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server preloads_media_file:file { r_file_perms unlink };
72549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server preloads_media_file:dir { r_dir_perms write remove_name rmdir };
72649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
72749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaler_dir_file(system_server, cgroup)
72849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server ion_device:chr_file r_file_perms;
72949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
73049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaler_dir_file(system_server, proc_asound)
73149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaler_dir_file(system_server, proc_net)
73249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaler_dir_file(system_server, proc_qtaguid_stat)
73349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server {
73449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  proc_loadavg
73549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  proc_meminfo
73649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  proc_pagetypeinfo
73749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  proc_pipe_conf
73849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  proc_stat
73949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  proc_uid_cputime_showstat
74049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  proc_uid_time_in_state
74149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  proc_uid_concurrent_active_time
74249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  proc_uid_concurrent_policy_time
74349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  proc_version
74449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  proc_vmallocinfo
74549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale}:file r_file_perms;
74649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
74749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server proc_uid_time_in_state:dir r_dir_perms;
74849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server proc_uid_cpupower:file r_file_perms;
74949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
75049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaler_dir_file(system_server, rootfs)
75149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
75249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Allow WifiService to start, stop, and read wifi-specific trace events.
75349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server debugfs_tracing_instances:dir search;
75449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server debugfs_wifi_tracing:dir search;
75549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server debugfs_wifi_tracing:file rw_file_perms;
75649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
75749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# allow system_server to exec shell, asanwrapper & zygote(app_process) on ASAN builds. Needed to run
75849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# asanwrapper.
75949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwalewith_asan(`
76049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  allow system_server shell_exec:file rx_file_perms;
76149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  allow system_server asanwrapper_exec:file rx_file_perms;
76249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  allow system_server zygote_exec:file rx_file_perms;
76349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale')
76449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
76549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# allow system_server to read the eBPF maps that stores the traffic stats information amd clean up
76649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# the map after snapshot is recorded
76749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server fs_bpf:dir search;
76849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server fs_bpf:file read;
76949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server netd:bpf map_read;
77049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
77149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# ART Profiles.
77249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Allow system_server to open profile snapshots for read.
77349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# System server never reads the actual content. It passes the descriptor to
77449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# to privileged apps which acquire the permissions to inspect the profiles.
775035fcc46ccf5ae864e9a30888faf7c2822ea77e1Calin Juravleallow system_server user_profile_data_file:dir { getattr search };
77649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server user_profile_data_file:file { getattr open read };
77749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
778687d5e46ce81608b308ff0ae4ba9edeb878be8aaCalin Juravle# System server may dump profile data for debuggable apps in the /data/misc/profman.
779687d5e46ce81608b308ff0ae4ba9edeb878be8aaCalin Juravle# As such it needs to be able create files but it should never read from them.
780687d5e46ce81608b308ff0ae4ba9edeb878be8aaCalin Juravleallow system_server profman_dump_data_file:file { create getattr setattr w_file_perms};
781687d5e46ce81608b308ff0ae4ba9edeb878be8aaCalin Juravleallow system_server profman_dump_data_file:dir w_dir_perms;
782687d5e46ce81608b308ff0ae4ba9edeb878be8aaCalin Juravle
783035fcc46ccf5ae864e9a30888faf7c2822ea77e1Calin Juravle# On userdebug build we may profile system server. Allow it to write and create its own profile.
784035fcc46ccf5ae864e9a30888faf7c2822ea77e1Calin Juravleuserdebug_or_eng(`
785035fcc46ccf5ae864e9a30888faf7c2822ea77e1Calin Juravle  allow system_server user_profile_data_file:file create_file_perms;
786035fcc46ccf5ae864e9a30888faf7c2822ea77e1Calin Juravle')
787035fcc46ccf5ae864e9a30888faf7c2822ea77e1Calin Juravle
78849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleuserdebug_or_eng(`
78949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  # Allow system server to notify mediaextractor of the plugin update.
79049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  allow system_server mediaextractor_update_service:service_manager find;
79149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale')
79249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
79349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# UsbDeviceManager uses /dev/usb-ffs
79449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server functionfs:dir search;
79549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleallow system_server functionfs:file rw_file_perms;
79649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
79749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale###
79849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale### Neverallow rules
79949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale###
80049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale### system_server should NEVER do any of this
80149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
80249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Do not allow opening files from external storage as unsafe ejection
80349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# could cause the kernel to kill the system_server.
80449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleneverallow system_server sdcard_type:dir { open read write };
80549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleneverallow system_server sdcard_type:file rw_file_perms;
80649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
80749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# system server should never be operating on zygote spawned app data
80849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# files directly. Rather, they should always be passed via a
80949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# file descriptor.
81049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Types extracted from seapp_contexts type= fields, excluding
81149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# those types that system_server needs to open directly.
81249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleneverallow system_server { bluetooth_data_file nfc_data_file shell_data_file app_data_file }:file { open create unlink link };
81349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
81449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Forking and execing is inherently dangerous and racy. See, for
81549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# example, https://www.linuxprogrammingblog.com/threads-and-fork-think-twice-before-using-them
81649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Prevent the addition of new file execs to stop the problem from
81749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# getting worse. b/28035297
81849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleneverallow system_server {
81949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  file_type
82049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  -toolbox_exec
82149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  -logcat_exec
82249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale  with_asan(`-shell_exec -asanwrapper_exec -zygote_exec')
82349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale}:file execute_no_trans;
82449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
82549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Ensure that system_server doesn't perform any domain transitions other than
82649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# transitioning to the crash_dump domain when a crash occurs.
82749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleneverallow system_server { domain -crash_dump }:process transition;
82849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleneverallow system_server *:process dyntransition;
82949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
83049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# Only allow crash_dump to connect to system_ndebug_socket.
83149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleneverallow { domain -init -system_server -crash_dump } system_ndebug_socket:sock_file { open write };
83249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
83349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# system_server should never be executing dex2oat. This is either
83449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# a bug (for example, bug 16317188), or represents an attempt by
83549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# system server to dynamically load a dex file, something we do not
83649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# want to allow.
83749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleneverallow system_server dex2oat_exec:file no_x_file_perms;
83849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
83949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# system_server should never execute or load executable shared libraries
84049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# in /data
84149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleneverallow system_server data_file_type:file no_x_file_perms;
84249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
84349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# The only block device system_server should be accessing is
84449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# the frp_block_device. This helps avoid a system_server to root
84549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# escalation by writing to raw block devices.
84649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleneverallow system_server { dev_type -frp_block_device }:blk_file no_rw_file_perms;
84749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
84849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# system_server should never use JIT functionality
84949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleneverallow system_server self:process execmem;
85049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleneverallow system_server ashmem_device:chr_file execute;
85149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
85249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# TODO: deal with tmpfs_domain pub/priv split properly
85349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleneverallow system_server system_server_tmpfs:file execute;
85449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
85549b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# dexoptanalyzer is currently used only for secondary dex files which
85649b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# system_server should never access.
85749b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleneverallow system_server dexoptanalyzer_exec:file no_x_file_perms;
85849b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
85949b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# No ptracing others
86049b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleneverallow system_server { domain -system_server }:process ptrace;
86149b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale
86249b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# CAP_SYS_RESOURCE was traditionally needed for sensitive /proc/PID
86349b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwale# file read access. However, that is now unnecessary (b/34951864)
86449b79029cbb4bfb362b6b823e63bb467e8012230Wale Ogunwaleneverallow system_server system_server:global_capability_class_set sys_resource;
865