2017-01-06 02:18:32 +01:00
|
|
|
###
|
|
|
|
### Apps that run with the system UID, e.g. com.android.system.ui,
|
|
|
|
### com.android.settings. These are not as privileged as the system
|
|
|
|
### server.
|
|
|
|
###
|
|
|
|
|
2017-03-23 22:27:32 +01:00
|
|
|
typeattribute system_app coredomain;
|
2017-01-06 02:18:32 +01:00
|
|
|
|
2016-12-08 20:23:34 +01:00
|
|
|
app_domain(system_app)
|
2017-01-06 02:18:32 +01:00
|
|
|
net_domain(system_app)
|
|
|
|
binder_service(system_app)
|
|
|
|
|
2017-07-11 05:39:50 +02:00
|
|
|
# android.ui and system.ui
|
|
|
|
allow system_app rootfs:dir getattr;
|
|
|
|
|
2017-01-06 02:18:32 +01:00
|
|
|
# Read and write /data/data subdirectory.
|
|
|
|
allow system_app system_app_data_file:dir create_dir_perms;
|
|
|
|
allow system_app system_app_data_file:{ file lnk_file } create_file_perms;
|
|
|
|
|
|
|
|
# Read and write to /data/misc/user.
|
|
|
|
allow system_app misc_user_data_file:dir create_dir_perms;
|
|
|
|
allow system_app misc_user_data_file:file create_file_perms;
|
|
|
|
|
|
|
|
# Access to vold-mounted storage for measuring free space
|
|
|
|
allow system_app mnt_media_rw_file:dir search;
|
|
|
|
|
|
|
|
# Read wallpaper file.
|
|
|
|
allow system_app wallpaper_file:file r_file_perms;
|
|
|
|
|
|
|
|
# Read icon file.
|
|
|
|
allow system_app icon_file:file r_file_perms;
|
|
|
|
|
|
|
|
# Write to properties
|
2018-04-09 05:07:32 +02:00
|
|
|
set_prop(system_app, bluetooth_a2dp_offload_prop)
|
2017-01-06 02:18:32 +01:00
|
|
|
set_prop(system_app, bluetooth_prop)
|
|
|
|
set_prop(system_app, debug_prop)
|
|
|
|
set_prop(system_app, system_prop)
|
2018-04-09 05:07:32 +02:00
|
|
|
set_prop(system_app, exported_bluetooth_prop)
|
2017-10-19 09:54:49 +02:00
|
|
|
set_prop(system_app, exported_system_prop)
|
|
|
|
set_prop(system_app, exported2_system_prop)
|
|
|
|
set_prop(system_app, exported3_system_prop)
|
2017-01-06 02:18:32 +01:00
|
|
|
set_prop(system_app, logd_prop)
|
|
|
|
set_prop(system_app, net_radio_prop)
|
|
|
|
set_prop(system_app, system_radio_prop)
|
2017-10-19 09:54:49 +02:00
|
|
|
set_prop(system_app, exported_system_radio_prop)
|
2017-01-06 02:18:32 +01:00
|
|
|
set_prop(system_app, log_tag_prop)
|
|
|
|
userdebug_or_eng(`set_prop(system_app, logpersistd_logging_prop)')
|
|
|
|
auditallow system_app net_radio_prop:property_service set;
|
|
|
|
auditallow system_app system_radio_prop:property_service set;
|
2017-10-19 09:54:49 +02:00
|
|
|
auditallow system_app exported_system_radio_prop:property_service set;
|
2017-01-06 02:18:32 +01:00
|
|
|
|
|
|
|
# ctl interface
|
|
|
|
set_prop(system_app, ctl_default_prop)
|
|
|
|
set_prop(system_app, ctl_bugreport_prop)
|
|
|
|
|
|
|
|
# Create /data/anr/traces.txt.
|
|
|
|
allow system_app anr_data_file:dir ra_dir_perms;
|
|
|
|
allow system_app anr_data_file:file create_file_perms;
|
|
|
|
|
|
|
|
# Settings need to access app name and icon from asec
|
|
|
|
allow system_app asec_apk_file:file r_file_perms;
|
|
|
|
|
2018-02-13 18:33:36 +01:00
|
|
|
# Allow system apps (like Settings) to interact with statsd
|
|
|
|
binder_call(system_app, statsd)
|
|
|
|
|
2016-11-21 08:23:04 +01:00
|
|
|
# Allow system apps to interact with incidentd
|
|
|
|
binder_call(system_app, incidentd)
|
|
|
|
|
2017-01-06 02:18:32 +01:00
|
|
|
allow system_app servicemanager:service_manager list;
|
|
|
|
# TODO: scope this down? Too broad?
|
2017-09-26 21:58:29 +02:00
|
|
|
allow system_app {
|
|
|
|
service_manager_type
|
2018-08-17 09:35:42 +02:00
|
|
|
-apex_service
|
2017-09-26 21:58:29 +02:00
|
|
|
-dumpstate_service
|
|
|
|
-installd_service
|
|
|
|
-netd_service
|
|
|
|
-virtual_touchpad_service
|
|
|
|
-vold_service
|
|
|
|
-vr_hwc_service
|
|
|
|
}:service_manager find;
|
2017-10-13 22:33:46 +02:00
|
|
|
# suppress denials for services system_app should not be accessing.
|
|
|
|
dontaudit system_app {
|
|
|
|
dumpstate_service
|
|
|
|
installd_service
|
|
|
|
netd_service
|
|
|
|
virtual_touchpad_service
|
|
|
|
vold_service
|
|
|
|
vr_hwc_service
|
|
|
|
}:service_manager find;
|
2017-01-06 02:18:32 +01:00
|
|
|
|
|
|
|
allow system_app keystore:keystore_key {
|
|
|
|
get_state
|
|
|
|
get
|
|
|
|
insert
|
|
|
|
delete
|
|
|
|
exist
|
|
|
|
list
|
|
|
|
reset
|
|
|
|
password
|
|
|
|
lock
|
|
|
|
unlock
|
|
|
|
is_empty
|
|
|
|
sign
|
|
|
|
verify
|
|
|
|
grant
|
|
|
|
duplicate
|
|
|
|
clear_uid
|
|
|
|
user_changed
|
|
|
|
};
|
|
|
|
|
Start the process of locking down proc/net
Files in /proc/net leak information. This change is the first step in
determining which files apps may use, whitelisting benign access, and
otherwise removing access while providing safe alternative APIs.
To that end, this change:
* Introduces the proc_net_type attribute which will assigned to any
new SELinux types in /proc/net to avoid removing access to privileged
processes. These processes may be evaluated later, but are lower
priority than apps.
* Labels /proc/net/{tcp,tcp6,udp,udp6} as proc_net_vpn due to existing
use by VPN apps. This may be replaced by an alternative API.
* Audits all other proc/net access for apps.
* Audits proc/net access for other processes which are currently
granted broad read access to /proc/net but should not be including
storaged, zygote, clatd, logd, preopt2cachename and vold.
Bug: 9496886
Bug: 68016944
Test: Boot Taimen-userdebug. On both wifi and cellular: stream youtube
navigate maps, send text message, make voice call, make video call.
Verify no avc "granted" messages in the logs.
Test: A few VPN apps including "VPN Monster", "Turbo VPN", and
"Freighter". Verify no logspam with the current setup.
Test: atest CtsNativeNetTestCases
Test: atest netd_integration_test
Test: atest QtaguidPermissionTest
Test: atest FileSystemPermissionTest
Change-Id: I7e49f796a25cf68bc698c6c9206e24af3ae11457
Merged-In: I7e49f796a25cf68bc698c6c9206e24af3ae11457
(cherry picked from commit 087318957f26e921d62f2e234fc14bff3c59030e)
2018-04-10 21:47:48 +02:00
|
|
|
# /proc/net access.
|
|
|
|
# TODO(b/9496886) Audit access for removal.
|
|
|
|
r_dir_file(system_app, proc_net_type)
|
|
|
|
userdebug_or_eng(`
|
|
|
|
auditallow system_app proc_net_type:{ dir file lnk_file } { getattr open read };
|
|
|
|
')
|
|
|
|
|
2018-01-10 21:51:51 +01:00
|
|
|
# settings app reads /proc/version
|
2017-09-27 21:27:03 +02:00
|
|
|
allow system_app {
|
|
|
|
proc_version
|
|
|
|
}:file r_file_perms;
|
2017-07-26 01:43:49 +02:00
|
|
|
|
2017-01-06 02:18:32 +01:00
|
|
|
control_logd(system_app)
|
2016-11-08 00:11:39 +01:00
|
|
|
read_runtime_log_tags(system_app)
|
2018-01-18 18:22:28 +01:00
|
|
|
get_prop(system_app, device_logging_prop)
|
2017-04-26 20:40:48 +02:00
|
|
|
|
2017-12-15 03:20:30 +01:00
|
|
|
# allow system apps to use UDP sockets provided by the system server but not
|
|
|
|
# modify them other than to connect
|
2018-03-27 15:34:54 +02:00
|
|
|
allow system_app system_server:udp_socket {
|
|
|
|
connect getattr read recvfrom sendto write getopt setopt };
|
2017-12-15 03:20:30 +01:00
|
|
|
|
2017-04-26 20:40:48 +02:00
|
|
|
###
|
|
|
|
### Neverallow rules
|
|
|
|
###
|
|
|
|
|
|
|
|
# app domains which access /dev/fuse should not run as system_app
|
|
|
|
neverallow system_app fuse_device:chr_file *;
|