commit:     414de294634f9a02b072c433c1aab4387f60925e
Author:     Chad Hanson <dahchanson <AT> gmail <DOT> com>
AuthorDate: Mon Dec 11 04:02:15 2017 +0000
Commit:     Sven Vermeulen <swift <AT> gentoo <DOT> org>
CommitDate: Wed Dec 13 11:59:25 2017 +0000
URL:        
https://gitweb.gentoo.org/proj/hardened-refpolicy.git/commit/?id=414de294

Fix implementation of MLS file relabel attributes

This patch properly completes the implementation of the MLS file relabel 
attributes. In the previous patch 
[http://oss.tresys.com/pipermail/refpolicy/2016-July/008038.html], a new 
attribute, mlsfilerelabetoclr, was created. There should have been a second 
attribute, mlsfilerelabel, created instead of overloading mlsfilewrite for this 
privilege. I concur with creating new attributes for this situation. I have 
created the patch below.

Signed-off-by: Chad Hanson <dahchanson <AT> gmail.com>

 policy/mls                   |  2 +-
 policy/modules/kernel/mls.if | 28 ++++++++++++++++++++++++----
 policy/modules/kernel/mls.te |  3 ++-
 3 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/policy/mls b/policy/mls
index 2dadd205..73ff301b 100644
--- a/policy/mls
+++ b/policy/mls
@@ -72,7 +72,7 @@ mlsconstrain { file lnk_file fifo_file } { create relabelto }
 mlsconstrain { dir file lnk_file chr_file blk_file sock_file fifo_file } 
relabelto
        (( h1 dom h2 ) or
        (( t1 == mlsfilerelabeltoclr ) and ( h1 dom l2 )) or
-       ( t1 == mlsfilewrite ));
+       ( t1 == mlsfilerelabel ));
 
 # the file "read" ops (note the check is dominance of the low level)
 mlsconstrain { dir file lnk_file chr_file blk_file sock_file fifo_file } { 
read getattr execute }

diff --git a/policy/modules/kernel/mls.if b/policy/modules/kernel/mls.if
index b09c0a5a..2e2bebc2 100644
--- a/policy/modules/kernel/mls.if
+++ b/policy/modules/kernel/mls.if
@@ -74,6 +74,26 @@ interface(`mls_file_write_to_clearance',`
 ########################################
 ## <summary>
 ##     Make specified domain MLS trusted
+##     for writing to files at all levels.
+## </summary>
+## <param name="domain">
+##     <summary>
+##     Domain allowed access.
+##     </summary>
+## </param>
+## <rolecap/>
+#
+interface(`mls_file_write_all_levels',`
+       gen_require(`
+               attribute mlsfilewrite;
+       ')
+
+       typeattribute $1 mlsfilewrite;
+')
+
+########################################
+## <summary>
+##     Make specified domain MLS trusted
 ##     for relabelto to files up to its clearance.
 ## </summary>
 ## <param name="domain">
@@ -94,7 +114,7 @@ interface(`mls_file_relabel_to_clearance',`
 ########################################
 ## <summary>
 ##     Make specified domain MLS trusted
-##     for writing to files at all levels.
+##     for relabelto to files at all levels.
 ## </summary>
 ## <param name="domain">
 ##     <summary>
@@ -103,12 +123,12 @@ interface(`mls_file_relabel_to_clearance',`
 ## </param>
 ## <rolecap/>
 #
-interface(`mls_file_write_all_levels',`
+interface(`mls_file_relabel',`
        gen_require(`
-               attribute mlsfilewrite;
+               attribute mlsfilerelabel;
        ')
 
-       typeattribute $1 mlsfilewrite;
+       typeattribute $1 mlsfilerelabel;
 ')
 
 ########################################

diff --git a/policy/modules/kernel/mls.te b/policy/modules/kernel/mls.te
index ad74e81f..7c50e75c 100644
--- a/policy/modules/kernel/mls.te
+++ b/policy/modules/kernel/mls.te
@@ -10,9 +10,10 @@ attribute mlsfilereadtoclr;
 attribute mlsfilewrite;
 attribute mlsfilewritetoclr;
 attribute mlsfilewriteinrange;
+attribute mlsfilerelabel;
+attribute mlsfilerelabeltoclr;
 attribute mlsfileupgrade;
 attribute mlsfiledowngrade;
-attribute mlsfilerelabeltoclr;
 
 attribute mlsnetread;
 attribute mlsnetreadtoclr;

Reply via email to