commit: 64cf693da42e01a1c97d6f5f354c01e9466311d8
Author: Russell Coker <russell <AT> coker <DOT> com <DOT> au>
AuthorDate: Mon Aug 4 13:25:17 2025 +0000
Commit: Jason Zaman <perfinion <AT> gentoo <DOT> org>
CommitDate: Tue Sep 2 22:04:48 2025 +0000
URL:
https://gitweb.gentoo.org/proj/hardened-refpolicy.git/commit/?id=64cf693d
strict2 (#1002)
* Another set of small patches needed for strict mode
Signed-off-by: Russell Coker <russell <AT> coker.com.au>
Signed-off-by: Jason Zaman <perfinion <AT> gentoo.org>
policy/global_tunables | 8 ++++++++
policy/modules/apps/gnome.if | 2 ++
policy/modules/apps/mozilla.te | 12 ++++++++++++
policy/modules/kernel/corecommands.fc | 1 +
policy/modules/roles/sysadm.te | 15 +++++++++++++++
policy/modules/services/cron.te | 1 +
policy/modules/services/ntp.te | 1 +
policy/modules/system/init.te | 1 +
policy/modules/system/systemd.te | 2 +-
policy/modules/system/unconfined.if | 8 ++++++++
policy/modules/system/unconfined.te | 4 ++++
policy/modules/system/userdomain.if | 25 +++++++++++++++++++++++++
12 files changed, 79 insertions(+), 1 deletion(-)
diff --git a/policy/global_tunables b/policy/global_tunables
index 7b7f5fed4..1dd585220 100644
--- a/policy/global_tunables
+++ b/policy/global_tunables
@@ -129,3 +129,11 @@ gen_tunable(user_tcp_server,false)
## </p>
## </desc>
gen_tunable(user_udp_server,false)
+
+## <desc>
+## <p>
+## Allow users to execmod tmpfs files, KDE plasmashell needs this
+## the same domain and outside users)
+## </p>
+## </desc>
+gen_tunable(user_execmod_tmpfs,false)
diff --git a/policy/modules/apps/gnome.if b/policy/modules/apps/gnome.if
index f492d7ea1..fe0fe951e 100644
--- a/policy/modules/apps/gnome.if
+++ b/policy/modules/apps/gnome.if
@@ -101,6 +101,8 @@ template(`gnome_role_template',`
optional_policy(`
dbus_spec_session_domain($1, $1_gkeyringd_t, gkeyringd_exec_t)
dbus_system_bus_client($1_gkeyringd_t)
+ dbus_write_session_runtime_socket($1_gkeyringd_t)
+ dbus_getattr_session_runtime_socket($1_gkeyringd_t)
optional_policy(`
evolution_dbus_chat($1_gkeyringd_t)
diff --git a/policy/modules/apps/mozilla.te b/policy/modules/apps/mozilla.te
index ff5643801..e9b7e2301 100644
--- a/policy/modules/apps/mozilla.te
+++ b/policy/modules/apps/mozilla.te
@@ -116,11 +116,13 @@ allow mozilla_t mozilla_plugin_rw_t:lnk_file
read_lnk_file_perms;
stream_connect_pattern(mozilla_t, mozilla_plugin_tmpfs_t,
mozilla_plugin_tmpfs_t, mozilla_plugin_t)
manage_files_pattern(mozilla_t, mozilla_xdg_cache_t, mozilla_xdg_cache_t)
+allow mozilla_t mozilla_xdg_cache_t:file map;
manage_dirs_pattern(mozilla_t, mozilla_xdg_cache_t, mozilla_xdg_cache_t)
xdg_cache_filetrans(mozilla_t, mozilla_xdg_cache_t, dir, "mozilla")
can_exec(mozilla_t, { mozilla_exec_t mozilla_plugin_rw_t mozilla_plugin_home_t
})
+kernel_read_device_sysctls(mozilla_t)
kernel_read_kernel_sysctls(mozilla_t)
kernel_read_network_state(mozilla_t)
kernel_read_system_state(mozilla_t)
@@ -133,6 +135,7 @@ corecmd_exec_bin(mozilla_t)
corenet_all_recvfrom_netlabel(mozilla_t)
corenet_tcp_sendrecv_generic_if(mozilla_t)
corenet_tcp_sendrecv_generic_node(mozilla_t)
+corenet_udp_bind_generic_node(mozilla_t)
corenet_sendrecv_http_client_packets(mozilla_t)
corenet_tcp_connect_http_port(mozilla_t)
@@ -268,6 +271,7 @@ optional_policy(`
optional_policy(`
dbus_all_session_bus_client(mozilla_t)
dbus_connect_all_session_bus(mozilla_t)
+ dbus_write_session_runtime_socket(mozilla_t)
dbus_system_bus_client(mozilla_t)
optional_policy(`
@@ -281,6 +285,14 @@ optional_policy(`
optional_policy(`
networkmanager_dbus_chat(mozilla_t)
')
+
+ optional_policy(`
+ ntp_dbus_chat(mozilla_t)
+ ')
+
+ optional_policy(`
+ systemd_dbus_chat_logind(mozilla_t)
+ ')
')
optional_policy(`
diff --git a/policy/modules/kernel/corecommands.fc
b/policy/modules/kernel/corecommands.fc
index 572dcca78..d0d9b6454 100644
--- a/policy/modules/kernel/corecommands.fc
+++ b/policy/modules/kernel/corecommands.fc
@@ -356,6 +356,7 @@ ifdef(`distro_debian',`
/usr/share/hal/scripts(/.*)? gen_context(system_u:object_r:bin_t,s0)
/usr/share/ifupdown2/__main__\.py --
gen_context(system_u:object_r:bin_t,s0)
/usr/share/libalpm/scripts(/.*)? gen_context(system_u:object_r:bin_t,s0)
+/usr/share/libpam-kwallet-common/pam_kwallet_init --
gen_context(system_u:object_r:bin_t,s0)
/usr/share/mc/extfs/.* -- gen_context(system_u:object_r:bin_t,s0)
/usr/share/Modules/init(/.*)? gen_context(system_u:object_r:bin_t,s0)
/usr/share/org\.gnome\.Weather/org\.gnome\.Weather\.Application --
gen_context(system_u:object_r:bin_t,s0)
diff --git a/policy/modules/roles/sysadm.te b/policy/modules/roles/sysadm.te
index 34dad783c..928d0dfe1 100644
--- a/policy/modules/roles/sysadm.te
+++ b/policy/modules/roles/sysadm.te
@@ -1,5 +1,9 @@
policy_module(sysadm)
+gen_require(`
+ class system status;
+')
+
########################################
#
# Declarations
@@ -43,6 +47,9 @@ corecmd_exec_shell(sysadm_t)
corenet_ib_access_unlabeled_pkeys(sysadm_t)
corenet_ib_manage_subnet_unlabeled_endports(sysadm_t)
+domain_getsched_all_domains(sysadm_t)
+
+dev_read_cpuid(sysadm_t)
dev_read_kmsg(sysadm_t)
dev_rw_ipmi_dev(sysadm_t)
@@ -64,6 +71,9 @@ init_admin(sysadm_t)
userdom_manage_user_home_dirs(sysadm_t)
userdom_home_filetrans_user_home_dir(sysadm_t)
+# for systemd-analyze
+files_get_etc_unit_status(sysadm_t)
+
ifdef(`direct_sysadm_daemon',`
optional_policy(`
init_run_daemon(sysadm_t, sysadm_r)
@@ -1109,6 +1119,10 @@ optional_policy(`
systemd_dbus_chat_hostnamed(sysadm_t)
')
+optional_policy(`
+ systemd_dbus_chat_logind(sysadm_t)
+')
+
optional_policy(`
tboot_run_txtstat(sysadm_t, sysadm_r)
')
@@ -1177,6 +1191,7 @@ optional_policy(`
')
optional_policy(`
+ dev_rw_generic_usb_dev(sysadm_t)
usbmodules_run(sysadm_t, sysadm_r)
')
diff --git a/policy/modules/services/cron.te b/policy/modules/services/cron.te
index 184b383e5..3941fdf1e 100644
--- a/policy/modules/services/cron.te
+++ b/policy/modules/services/cron.te
@@ -490,6 +490,7 @@ allow system_cronjob_t crond_tmp_t:file
rw_inherited_file_perms;
kernel_getattr_core_if(system_cronjob_t)
kernel_getattr_message_if(system_cronjob_t)
+kernel_read_fs_sysctls(system_cronjob_t)
kernel_read_irq_sysctls(system_cronjob_t)
kernel_read_kernel_sysctls(system_cronjob_t)
kernel_read_network_state(system_cronjob_t)
diff --git a/policy/modules/services/ntp.te b/policy/modules/services/ntp.te
index af4ac48ab..5a75f3fce 100644
--- a/policy/modules/services/ntp.te
+++ b/policy/modules/services/ntp.te
@@ -136,6 +136,7 @@ auth_use_nsswitch(ntpd_t)
init_daemon_lock_file(ntpd_lock_t, file, "ntpsec-ntpdate")
init_exec_script_files(ntpd_t)
+init_get_generic_units_status(ntpd_t)
logging_send_syslog_msg(ntpd_t)
diff --git a/policy/modules/system/init.te b/policy/modules/system/init.te
index 7a20a5140..c2f33c2bd 100644
--- a/policy/modules/system/init.te
+++ b/policy/modules/system/init.te
@@ -211,6 +211,7 @@ allow init_t initrc_runtime_t:file { rw_file_perms setattr
};
allow init_t init_tmpfs_t:file manage_file_perms;
fs_tmpfs_filetrans(init_t, init_tmpfs_t, file)
+kernel_read_psi(init_t)
kernel_read_system_state(init_t)
kernel_share_state(init_t)
kernel_dontaudit_search_unlabeled(init_t)
diff --git a/policy/modules/system/systemd.te b/policy/modules/system/systemd.te
index 548e2cbd0..637804935 100644
--- a/policy/modules/system/systemd.te
+++ b/policy/modules/system/systemd.te
@@ -2275,7 +2275,7 @@ tunable_policy(`systemd_tmpfiles_manage_all',`
')
optional_policy(`
- dbus_read_lib_files(systemd_tmpfiles_t)
+ dbus_manage_lib_files(systemd_tmpfiles_t)
dbus_relabel_lib_dirs(systemd_tmpfiles_t)
')
diff --git a/policy/modules/system/unconfined.if
b/policy/modules/system/unconfined.if
index 45cb43907..f3e5d3001 100644
--- a/policy/modules/system/unconfined.if
+++ b/policy/modules/system/unconfined.if
@@ -41,6 +41,7 @@ interface(`unconfined_domain_noaudit',`
allow $1 self:fifo_file manage_fifo_file_perms;
# Manage most namespace capabilities
+ allow $1 self:user_namespace create;
allow $1 self:cap_userns { audit_write chown dac_override
dac_read_search fowner fsetid ipc_lock ipc_owner kill lease linux_immutable
mknod net_admin net_bind_service net_raw setfcap setgid setpcap setuid
sys_admin sys_boot sys_chroot sys_module sys_nice sys_pacct sys_ptrace
sys_rawio sys_resource sys_time sys_tty_config };
allow $1 self:cap2_userns { audit_read block_suspend bpf mac_admin
mac_override perfmon syslog wake_alarm };
@@ -52,6 +53,12 @@ interface(`unconfined_domain_noaudit',`
allow $1 self:anon_inode { manage_file_perms mounton quotaon
relabel_file_perms watch watch_mount watch_reads watch_sb watch_with_perm };
#selint-disable:S-009
+ # used by Chrome for some reason
+ allow $1 self:dir manage_dir_perms;
+
+ # for io_uring
+ allow $1 self:anon_inode { create map read write };
+
# Userland object managers
allow $1 self:nscd { admin getgrp gethost getpwd getserv getstat
shmemgrp shmemhost shmempwd shmemserv };
allow $1 self:dbus { acquire_svc send_msg };
@@ -66,6 +73,7 @@ interface(`unconfined_domain_noaudit',`
domain_dontaudit_ptrace_all_domains($1)
files_unconfined($1)
fs_unconfined($1)
+ fs_watch_memory_pressure($1)
selinux_unconfined($1)
files_get_etc_unit_status($1)
files_start_etc_service($1)
diff --git a/policy/modules/system/unconfined.te
b/policy/modules/system/unconfined.te
index 4de7860d9..0942b19fb 100644
--- a/policy/modules/system/unconfined.te
+++ b/policy/modules/system/unconfined.te
@@ -76,6 +76,10 @@ ifdef(`init_systemd',`
')
')
+tunable_policy(`user_execmod_tmpfs', `
+ userdom_execmod_user_tmpfs_files(unconfined_t)
+')
+
optional_policy(`
apache_run_helper(unconfined_t, unconfined_r)
apache_role(unconfined, unconfined_t,
unconfined_application_exec_domain, unconfined_r)
diff --git a/policy/modules/system/userdomain.if
b/policy/modules/system/userdomain.if
index a5bf52314..35198b4e1 100644
--- a/policy/modules/system/userdomain.if
+++ b/policy/modules/system/userdomain.if
@@ -151,6 +151,11 @@ template(`userdom_base_user_template',`
devicekit_dbus_chat_power($1_t)
')
+ optional_policy(`
+ # allow all users to register fingerprints
+ fprintd_dbus_chat($1_t)
+ ')
+
optional_policy(`
kerneloops_dbus_chat($1_t)
')
@@ -997,6 +1002,8 @@ template(`userdom_login_user_template', `
allow $1_t self:context contains;
+ allow $1_t self:anon_inode { create read write map };
+
kernel_dontaudit_read_system_state($1_t)
dev_read_sysfs($1_t)
@@ -4270,6 +4277,24 @@ interface(`userdom_manage_user_tmpfs_files',`
fs_search_tmpfs($1)
')
+########################################
+## <summary>
+## execute and execmod user tmpfs files
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`userdom_execmod_user_tmpfs_files',`
+ gen_require(`
+ type user_tmpfs_t;
+ ')
+
+ allow $1 user_tmpfs_t:file { execute execmod };
+')
+
########################################
## <summary>
## Get the attributes of a user domain tty.