blob: 211405bcfa0f6e9c5141c0606e246bfb54b19f79 [file] [log] [blame] [edit]
# aconfigd -- manager for aconfig flags
type aconfigd, domain, coredomain, mlstrustedsubject;
type aconfigd_exec, exec_type, file_type, system_file_type;
init_daemon_domain(aconfigd)
allow aconfigd metadata_file:dir search;
allow aconfigd {
aconfig_storage_metadata_file
aconfig_storage_flags_metadata_file
}:dir create_dir_perms;
allow aconfigd {
aconfig_storage_metadata_file
aconfig_storage_flags_metadata_file
}:file create_file_perms;
# allow aconfigd to log to the kernel dmesg via a file descriptor
# passed from init to aconfigd
allow aconfigd kmsg_device:chr_file write;
# allow aconfigd to read vendor partition storage files
allow aconfigd vendor_aconfig_storage_file:file r_file_perms;
allow aconfigd vendor_aconfig_storage_file:dir r_dir_perms;
# allow aconfigd to read /apex dir
allow aconfigd apex_mnt_dir:dir r_dir_perms;
allow aconfigd apex_mnt_dir:file r_file_perms;
dontaudit aconfigd apex_info_file:file r_file_perms;
###
### Neverallow assertions
###
# only init is allowed to enter the aconfigd domain
neverallow { domain -init } aconfigd:process transition;
neverallow * aconfigd:process dyntransition;
# Do not allow write access to boot/map storage files except, aconfigd and aconfigd_mainline.
# These files are meant to serve flag reads for all processes. They are created by aconfigd (for
# platform storage files) and aconfigd_mainline (mainline storage files) processes.
neverallow {
domain
-init
-aconfigd
-aconfigd_mainline
} aconfig_storage_metadata_file:dir no_w_dir_perms;
neverallow {
domain
-init
-aconfigd
-aconfigd_mainline
} aconfig_storage_metadata_file:file no_w_file_perms;
# Only aconfigd and aconfigd_mainline can access persist storage files
# These files are meant to serve as persist flag value storage, only aconfigd and
# aconfigd_mainline process should manage them. Other processes should have zero access.
neverallow {
domain
-init
-aconfigd
-aconfigd_mainline
} aconfig_storage_flags_metadata_file:dir *;
neverallow {
domain
-init
-aconfigd
-aconfigd_mainline
} aconfig_storage_flags_metadata_file:file no_rw_file_perms;