am bf12e225: Allow kernel domain, not init domain, to set SELinux enforcing mode.

* commit 'bf12e2251422cc8470de21dd882872b7b6f960f6':
  Allow kernel domain, not init domain, to set SELinux enforcing mode.
This commit is contained in:
Stephen Smalley 2013-12-06 08:25:35 -08:00 committed by Android Git Automerger
commit 6c8cbac334
3 changed files with 15 additions and 2 deletions

View file

@ -130,8 +130,17 @@ neverallow { domain -relabeltodomain } *:dir_file_class_set relabelto;
### neverallow rules
###
# Only init should be able to load SELinux policies and set enforcing mode.
neverallow { domain -init } kernel:security { load_policy setenforce };
# Only init should be able to load SELinux policies.
# The first load technically occurs while still in the kernel domain,
# but this does not trigger a denial since there is no policy yet.
# Policy reload requires allowing this to the init domain.
neverallow { domain -init } kernel:security load_policy;
# Only init prior to switching context should be able to set enforcing mode.
# init starts in kernel domain and switches to init domain via setcon in
# the init.rc, so the setenforce occurs while still in kernel. After
# switching domains, there is never any need to setenforce again by init.
neverallow { domain -kernel } kernel:security setenforce;
# Only init, ueventd and system_server should be able to access HW RNG
neverallow { domain -init -system_server -ueventd -unconfineddomain } hw_random_device:chr_file *;

View file

@ -11,3 +11,4 @@ allow init {fs_type dev_type file_type}:dir_file_class_set relabelto;
allow init kernel:security { load_policy setenforce };
allow init usermodehelper:file rw_file_perms;
allow init proc_security:file rw_file_perms;
allow init kernel:security load_policy;

View file

@ -6,3 +6,6 @@ relabelto_domain(kernel)
allow kernel {fs_type dev_type file_type}:dir_file_class_set relabelto;
allow kernel unlabeled:filesystem mount;
# Initial setenforce by init prior to switching to init domain.
allow kernel self:security setenforce;