commit: df1ee817ba489be676d93b7103101e0106cbe7ce
Author: Guido Trentalancia <guido <AT> trentalancia <DOT> net>
AuthorDate: Mon Sep 5 16:58:48 2016 +0000
Commit: Jason Zaman <perfinion <AT> gentoo <DOT> org>
CommitDate: Mon Oct 3 06:04:21 2016 +0000
URL:
https://gitweb.gentoo.org/proj/hardened-refpolicy.git/commit/?id=df1ee817
Improve tunable support for rw operations on noxattr fs / removable media
Improve the existing user domain template policy:
- better support for the "user_rw_noexattrfile" boolean (enable
write operations on filesystems that do not support extended
attributes, such as FAT or cdrom filesystem);
- add support for a new "user_exec_noexattrfile" boolean to
control the execution of files from filesystems that do not
support extended attributes (potentially dangerous);
- add support for a new "user_write_removable" boolean which
enables write operations on removable devices (such as
external removable USB memory, USB mobile phones, etc).
Note that devices might be removable but support extended
attributes (Linux xattr filesystems on external USB mass storage
devices), so two separate booleans are needed for optimal
configuration flexibility.
Writing to removable mass storage devices is a major cause of
leakage of confidential information, so the new boolean defaults
to false.
Disable raw access for MLS policies (thanks to Christoper
PeBenito for suggesting this).
This new version of the patch correctly includes the definitions
of the new booleans (by including the .te file differences).
Signed-off-by: Guido Trentalancia <guido <AT> trentalancia.net>
policy/modules/system/userdomain.if | 52 ++++++++++++++++++++++---------------
policy/modules/system/userdomain.te | 17 ++++++++++++
2 files changed, 48 insertions(+), 21 deletions(-)
diff --git a/policy/modules/system/userdomain.if
b/policy/modules/system/userdomain.if
index f22ef9b..12585fb 100644
--- a/policy/modules/system/userdomain.if
+++ b/policy/modules/system/userdomain.if
@@ -596,10 +596,37 @@ template(`userdom_common_user_template',`
dev_read_mouse($1_t)
')
+ tunable_policy(`user_rw_noexattrfile',`
+ fs_manage_noxattr_fs_files($1_t)
+ fs_manage_noxattr_fs_dirs($1_t)
+ ',`
+ fs_read_noxattr_fs_files($1_t)
+ ')
+
tunable_policy(`user_ttyfile_stat',`
term_getattr_all_ttys($1_t)
')
+ ifndef(`enable_mls',`
+ tunable_policy(`user_write_removable',`
+ # Read/write floppies and other removable devices
+ storage_raw_read_removable_device($1_t)
+ storage_raw_write_removable_device($1_t)
+ ',`
+ # Read floppies
+ storage_raw_read_removable_device($1_t)
+ ')
+ ')
+
+ tunable_policy(`user_write_removable',`
+ # Read/write USB devices (e.g. external removable USB mass
storage devices)
+ dev_rw_generic_usb_dev($1_t)
+ ',`
+ # Read USB devices (e.g. external removable USB mass storage
devices)
+ dev_read_generic_usb_dev($1_t)
+ ')
+
+
optional_policy(`
alsa_home_filetrans_alsa_home($1_t, file, ".asoundrc")
alsa_manage_home_files($1_t)
@@ -1062,26 +1089,16 @@ template(`userdom_unpriv_user_template', `
files_exec_usr_files($1_t)
- ifndef(`enable_mls',`
- fs_exec_noxattr($1_t)
-
- tunable_policy(`user_rw_noexattrfile',`
- fs_manage_noxattr_fs_files($1_t)
- fs_manage_noxattr_fs_dirs($1_t)
- # Write floppies
- storage_raw_read_removable_device($1_t)
- storage_raw_write_removable_device($1_t)
- ',`
- storage_raw_read_removable_device($1_t)
- ')
- ')
-
tunable_policy(`user_dmesg',`
kernel_read_ring_buffer($1_t)
',`
kernel_dontaudit_read_ring_buffer($1_t)
')
+ tunable_policy(`user_exec_noexattrfile',`
+ fs_exec_noxattr($1_t)
+ ')
+
# Allow users to run TCP servers (bind to ports and accept connection
from
# the same domain and outside users) disabling this forces FTP passive
mode
# and may change other protocols
@@ -1263,13 +1280,6 @@ template(`userdom_admin_user_template',`
userdom_manage_user_home_content_sockets($1_t)
userdom_user_home_dir_filetrans_user_home_content($1_t, { dir file
lnk_file fifo_file sock_file })
- tunable_policy(`user_rw_noexattrfile',`
- fs_manage_noxattr_fs_files($1_t)
- fs_manage_noxattr_fs_dirs($1_t)
- ',`
- fs_read_noxattr_fs_files($1_t)
- ')
-
optional_policy(`
postgresql_unconfined($1_t)
')
diff --git a/policy/modules/system/userdomain.te
b/policy/modules/system/userdomain.te
index 9136d6b..3a97cc9 100644
--- a/policy/modules/system/userdomain.te
+++ b/policy/modules/system/userdomain.te
@@ -43,6 +43,23 @@ gen_tunable(user_rw_noexattrfile, false)
## <desc>
## <p>
+## Allow user to execute files on filesystems
+## that do not have extended attributes (FAT, CDROM, FLOPPY)
+## </p>
+## </desc>
+gen_tunable(user_exec_noexattrfile, false)
+
+## <desc>
+## <p>
+## Allow user to write files on removable
+## devices (e.g. external USB memory
+## devices or floppies)
+## </p>
+## </desc>
+gen_tunable(user_write_removable, false)
+
+## <desc>
+## <p>
## Allow w to display everyone
## </p>
## </desc>