From c626a882f5eef38cf9989e0423af53341df5058f Mon Sep 17 00:00:00 2001 From: Stephen Smalley <sds@tycho.nsa.gov> Date: Mon, 23 Jun 2014 09:17:51 -0400 Subject: [PATCH] Allow init to relabel rootfs files. This is required for the restorecon /adb_keys in init.rc or for any other relabeling of rootfs files to more specific types on kernels that support setting security contexts on rootfs inodes. Addresses denials such as: avc: denied { relabelfrom } for comm="init" name="adb_keys" dev="rootfs" ino=1917 scontext=u:r:init:s0 tcontext=u:object_r:rootfs:s0 tclass=file permissive=0 We do not need to prohibit relabelfrom of such files because our goal is to prevent writing to executable files, while relabeling the file to another type will take it to a non-executable (or non-writable) type. In contrast, relabelto must be prohibited by neverallow so that a modified file in a writable type cannot be made executable. Change-Id: I7595f615beaaa6fa524f3c32041918e197bfbebe Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov> --- domain.te | 2 +- init.te | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/domain.te b/domain.te index 787ce36dd..1a3feb435 100644 --- a/domain.te +++ b/domain.te @@ -278,7 +278,7 @@ neverallow { domain -recovery } { system_file exec_type }:dir_file_class_set { create write setattr relabelfrom relabelto append unlink link rename }; # Nothing should be writing to files in the rootfs. -neverallow domain rootfs:file { create write setattr relabelfrom relabelto append unlink link rename }; +neverallow domain rootfs:file { create write setattr relabelto append unlink link rename }; # Restrict context mounts to specific types marked with # the contextmount_type attribute. diff --git a/init.te b/init.te index 069f041db..2c00cb484 100644 --- a/init.te +++ b/init.te @@ -28,6 +28,9 @@ allow init contextmount_type:filesystem relabelto; allow init contextmount_type:dir r_dir_perms; allow init contextmount_type:notdevfile_class_set r_file_perms; +# restorecon /adb_keys or any other rootfs files to a more specific type. +allow init rootfs:file relabelfrom; + # restorecon and restorecon_recursive calls from init.rc files. # system/core/init.rc requires at least cache_file and data_file_type. # init.<board>.rc files often include device-specific types, so -- GitLab