Merge changes from topic "sharedlib_in_recovery"
* changes: init is a dynamic executable adbd is allowed to execute shell in recovery mode
This commit is contained in:
commit
b6639b0f52
6 changed files with 43 additions and 1 deletions
|
@ -12,6 +12,14 @@ userdebug_or_eng(`
|
|||
allow adbd su:process dyntransition;
|
||||
')
|
||||
|
||||
# When 'adb shell' is executed in recovery mode, adbd explicitly
|
||||
# switches into shell domain using setcon() because the shell executable
|
||||
# is not labeled as shell but as rootfs.
|
||||
recovery_only(`
|
||||
domain_trans(adbd, rootfs, shell)
|
||||
allow adbd shell:process dyntransition;
|
||||
')
|
||||
|
||||
# Do not sanitize the environment or open fds of the shell. Allow signaling
|
||||
# created processes.
|
||||
allow adbd shell:process { noatsecure signal };
|
||||
|
@ -148,4 +156,4 @@ allow adbd rootfs:dir r_dir_perms;
|
|||
# transitions to the shell domain (except when it crashes). In particular, we
|
||||
# never want to see a transition from adbd to su (aka "adb root")
|
||||
neverallow adbd { domain -crash_dump -shell }:process transition;
|
||||
neverallow adbd { domain userdebug_or_eng(`-su') }:process dyntransition;
|
||||
neverallow adbd { domain userdebug_or_eng(`-su') recovery_only(`-shell') }:process dyntransition;
|
||||
|
|
|
@ -103,3 +103,18 @@ neverallow kernel *:file { entrypoint execute_no_trans };
|
|||
# Instead of adding dac_{read_search,override}, fix the unix permissions
|
||||
# on files being accessed.
|
||||
neverallow kernel self:global_capability_class_set { dac_override dac_read_search };
|
||||
|
||||
# Allow the first-stage init (which is running in the kernel domain) to execute the
|
||||
# dynamic linker when it re-executes /init to switch into the second stage.
|
||||
# Until Linux 4.8, the program interpreter (dynamic linker in this case) is executed
|
||||
# before the domain is switched to the target domain. So, we need to allow the kernel
|
||||
# domain (the source domain) to execute the dynamic linker (system_file type).
|
||||
# TODO(b/110147943) remove these allow rules when we no longer need to support Linux
|
||||
# kernel older than 4.8.
|
||||
allow kernel system_file:file execute;
|
||||
# The label for the dynamic linker is rootfs in the recovery partition. This is because
|
||||
# the recovery partition which is rootfs does not support xattr and thus labeling can't be
|
||||
# done at build-time. All files are by default labeled as rootfs upon booting.
|
||||
recovery_only(`
|
||||
allow kernel rootfs:file execute;
|
||||
')
|
||||
|
|
|
@ -30,6 +30,7 @@ recovery_only(`
|
|||
|
||||
# Mount filesystems.
|
||||
allow recovery rootfs:dir mounton;
|
||||
allow recovery tmpfs:dir mounton;
|
||||
allow recovery fs_type:filesystem ~relabelto;
|
||||
allow recovery unlabeled:filesystem ~relabelto;
|
||||
allow recovery contextmount_type:filesystem relabelto;
|
||||
|
|
|
@ -199,6 +199,12 @@ allow shell sepolicy_file:file r_file_perms;
|
|||
# Allow shell to start up vendor shell
|
||||
allow shell vendor_shell_exec:file rx_file_perms;
|
||||
|
||||
# Everything is labeled as rootfs in recovery mode. Allow shell to
|
||||
# execute them.
|
||||
recovery_only(`
|
||||
allow shell rootfs:file rx_file_perms;
|
||||
')
|
||||
|
||||
###
|
||||
### Neverallow rules
|
||||
###
|
||||
|
|
|
@ -39,6 +39,12 @@ allow ueventd self:process setfscreate;
|
|||
# Allow ueventd to read androidboot.android_dt_dir from kernel cmdline.
|
||||
allow ueventd proc_cmdline:file r_file_perms;
|
||||
|
||||
# Everything is labeled as rootfs in recovery mode. ueventd has to execute
|
||||
# the dynamic linker and shared libraries.
|
||||
recovery_only(`
|
||||
allow ueventd rootfs:file { r_file_perms execute };
|
||||
')
|
||||
|
||||
#####
|
||||
##### neverallow rules
|
||||
#####
|
||||
|
|
|
@ -155,6 +155,12 @@ allow vendor_init self:global_capability_class_set sys_admin;
|
|||
# Raw writes to misc block device
|
||||
allow vendor_init misc_block_device:blk_file w_file_perms;
|
||||
|
||||
# Everything is labeled as rootfs in recovery mode. Vendor init has to execute
|
||||
# the dynamic linker and shared libraries.
|
||||
recovery_only(`
|
||||
allow vendor_init rootfs:file { r_file_perms execute };
|
||||
')
|
||||
|
||||
not_compatible_property(`
|
||||
set_prop(vendor_init, {
|
||||
property_type
|
||||
|
|
Loading…
Reference in a new issue