commit:     c4d506d919d9584fb61e3ebfce7ee718eb866b27
Author:     Chris PeBenito <pebenito <AT> ieee <DOT> org>
AuthorDate: Fri Mar 19 19:50:06 2021 +0000
Commit:     Jason Zaman <perfinion <AT> gentoo <DOT> org>
CommitDate: Fri Apr  2 18:54:58 2021 +0000
URL:        
https://gitweb.gentoo.org/proj/hardened-refpolicy.git/commit/?id=c4d506d9

kernel: Add dontaudits when secure_mode_insmod is enabled.

Signed-off-by: Chris PeBenito <pebenito <AT> ieee.org>
Signed-off-by: Jason Zaman <perfinion <AT> gentoo.org>

 policy/modules/kernel/files.if  | 19 +++++++++++++++++++
 policy/modules/kernel/kernel.te | 15 ++++++++++++++-
 2 files changed, 33 insertions(+), 1 deletion(-)

diff --git a/policy/modules/kernel/files.if b/policy/modules/kernel/files.if
index 0687a435..349b8696 100644
--- a/policy/modules/kernel/files.if
+++ b/policy/modules/kernel/files.if
@@ -4369,6 +4369,25 @@ interface(`files_load_kernel_modules',`
        allow $1 modules_object_t:system module_load;
 ')
 
+########################################
+## <summary>
+##     Load kernel module files.
+## </summary>
+## <param name="domain">
+##     <summary>
+##     Domain allowed access.
+##     </summary>
+## </param>
+#
+interface(`files_dontaudit_load_kernel_modules',`
+       gen_require(`
+               type modules_object_t;
+       ')
+
+       dontaudit $1 modules_object_t:file read_file_perms;
+       dontaudit $1 modules_object_t:system module_load;
+')
+
 ########################################
 ## <summary>
 ##     List world-readable directories.

diff --git a/policy/modules/kernel/kernel.te b/policy/modules/kernel/kernel.te
index c44f49ed..2bd3f924 100644
--- a/policy/modules/kernel/kernel.te
+++ b/policy/modules/kernel/kernel.te
@@ -497,7 +497,20 @@ optional_policy(`
 # Kernel module loading policy
 #
 
-if( ! secure_mode_insmod ) {
+if(secure_mode_insmod) {
+       dontaudit can_load_kernmodule self:capability sys_module;
+       dontaudit can_load_kernmodule self:system module_load;
+
+       files_dontaudit_load_kernel_modules(can_load_kernmodule)
+
+       # load_module() calls stop_machine() which
+       # calls sched_setscheduler()
+       # gt: there seems to be no trace of the above, at
+       # least in kernel versions greater than 2.6.37...
+       dontaudit can_load_kernmodule self:capability sys_nice;
+       dontaudit can_load_kernmodule kernel_t:process setsched;
+       dontaudit can_load_kernmodule kernel_t:key search;
+} else {
        allow can_load_kernmodule self:capability sys_module;
        allow can_load_kernmodule self:system module_load;
 

Reply via email to