All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] strict policy patches
@ 2021-10-09 10:05 Russell Coker
  2021-10-11 16:12 ` Daniel Burgener
  2021-10-27 13:09 ` Chris PeBenito
  0 siblings, 2 replies; 4+ messages in thread
From: Russell Coker @ 2021-10-09 10:05 UTC (permalink / raw)
  To: selinux-refpolicy

Allow user domains to read kernel sysctls and crypto sysctls.

Add userdom_write_all_user_runtime_named_sockets interface (for pulseaudio_t).

Give sysadm_t more access.

Give dbus domains a little more access.

Allow ssh agent to write to an inherited log file from the X server.

Make systemd_analyze_exec_t an alias for bin_t and remove systemd_analyze_t 
omain.

Allow system cronjobs to read fs sysctls.

Signed-off-by: Russell Coker <russell@coker.com.au>

Index: refpolicy-2.20210908/policy/modules/system/userdomain.if
===================================================================
--- refpolicy-2.20210908.orig/policy/modules/system/userdomain.if
+++ refpolicy-2.20210908/policy/modules/system/userdomain.if
@@ -68,6 +68,8 @@ template(`userdom_base_user_template',`
 	dontaudit $1_t user_tty_device_t:chr_file ioctl;
 
 	kernel_read_kernel_sysctls($1_t)
+	kernel_read_crypto_sysctls($1_t)
+	kernel_read_vm_overcommit_sysctl($1_t)
 	kernel_dontaudit_list_unlabeled($1_t)
 	kernel_dontaudit_getattr_unlabeled_files($1_t)
 	kernel_dontaudit_getattr_unlabeled_symlinks($1_t)
@@ -3558,6 +3560,25 @@ interface(`userdom_delete_all_user_runti
 ')
 
 ########################################
+## <summary>
+##     write user runtime socket files
+## </summary>
+## <param name="domain">
+##     <summary>
+##     Domain allowed access.
+##     </summary>
+## </param>
+#
+interface(`userdom_write_all_user_runtime_named_sockets',`
+	gen_require(`
+		attribute user_runtime_content_type;
+	')
+
+	allow $1 user_runtime_content_type:dir list_dir_perms;
+	allow $1 user_runtime_content_type:sock_file write;
+')
+
+########################################
 ## <summary>
 ##	delete user runtime files
 ## </summary>
Index: refpolicy-2.20210908/policy/modules/roles/sysadm.te
===================================================================
--- refpolicy-2.20210908.orig/policy/modules/roles/sysadm.te
+++ refpolicy-2.20210908/policy/modules/roles/sysadm.te
@@ -33,11 +33,22 @@ ifndef(`enable_mls',`
 # Local policy
 #
 
+allow sysadm_t self:netlink_generic_socket { create setopt bind write read };
+
+# for ptrace
+allow sysadm_t self:netlink_tcpdiag_socket { create write nlmsg_read read };
+
+allow sysadm_t self:capability audit_write;
+allow sysadm_t self:system status;
+
 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)
 
 logging_watch_all_logs(sysadm_t)
@@ -58,6 +69,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)
@@ -1033,6 +1047,10 @@ optional_policy(`
 ')
 
 optional_policy(`
+	systemd_dbus_chat_logind(sysadm_t)
+')
+
+optional_policy(`
 	tboot_run_txtstat(sysadm_t, sysadm_r)
 ')
 
@@ -1100,6 +1118,7 @@ optional_policy(`
 ')
 
 optional_policy(`
+	dev_rw_generic_usb_dev(sysadm_t)
 	usbmodules_run(sysadm_t, sysadm_r)
 ')
 
Index: refpolicy-2.20210908/policy/modules/services/xserver.if
===================================================================
--- refpolicy-2.20210908.orig/policy/modules/services/xserver.if
+++ refpolicy-2.20210908/policy/modules/services/xserver.if
@@ -100,6 +100,7 @@ interface(`xserver_restricted_role',`
 	xserver_xsession_entry_type($2)
 	xserver_dontaudit_write_log($2)
 	xserver_stream_connect_xdm($2)
+	xserver_use_user_fonts($2)
 	# certain apps want to read xdm.pid file
 	xserver_read_xdm_runtime_files($2)
 	# gnome-session creates socket under /tmp/.ICE-unix/
@@ -141,7 +142,7 @@ interface(`xserver_role',`
 	gen_require(`
 		type iceauth_home_t, xserver_t, xserver_tmp_t, xserver_tmpfs_t, xauth_home_t;
 		type user_fonts_t, user_fonts_cache_t, user_fonts_config_t;
-		type mesa_shader_cache_t;
+		type mesa_shader_cache_t, xdm_t;
 	')
 
 	xserver_restricted_role($1, $2)
@@ -184,6 +185,8 @@ interface(`xserver_role',`
 
 	xserver_read_xkb_libs($2)
 
+	allow $2 xdm_t:unix_stream_socket accept;
+
 	optional_policy(`
 		xdg_cache_filetrans($2, mesa_shader_cache_t, dir, "mesa_shader_cache")
 	')
@@ -1224,6 +1227,7 @@ interface(`xserver_read_xkb_libs',`
 	allow $1 xkb_var_lib_t:dir list_dir_perms;
 	read_files_pattern($1, xkb_var_lib_t, xkb_var_lib_t)
 	read_lnk_files_pattern($1, xkb_var_lib_t, xkb_var_lib_t)
+	allow $1 xkb_var_lib_t:file map;
 ')
 
 ########################################
Index: refpolicy-2.20210908/policy/modules/services/dbus.if
===================================================================
--- refpolicy-2.20210908.orig/policy/modules/services/dbus.if
+++ refpolicy-2.20210908/policy/modules/services/dbus.if
@@ -85,6 +85,7 @@ template(`dbus_role_template',`
 
 	allow $3 $1_dbusd_t:unix_stream_socket connectto;
 	allow $3 $1_dbusd_t:dbus { send_msg acquire_svc };
+	allow $1_dbusd_t $3:dbus send_msg;
 	allow $3 $1_dbusd_t:fd use;
 
 	dontaudit $1_dbusd_t self:process getcap;
@@ -103,9 +104,13 @@ template(`dbus_role_template',`
 
 	allow $1_dbusd_t $3:process sigkill;
 
+	allow $1_dbusd_t self:process getcap;
+
 	corecmd_bin_domtrans($1_dbusd_t, $3)
 	corecmd_shell_domtrans($1_dbusd_t, $3)
 
+	dev_read_sysfs($1_dbusd_t)
+
 	auth_use_nsswitch($1_dbusd_t)
 
 	ifdef(`hide_broken_symptoms',`
@@ -117,6 +122,15 @@ template(`dbus_role_template',`
 		systemd_user_daemon_domain($1, dbusd_exec_t, $1_dbusd_t)
 		systemd_user_unix_stream_activated_socket($1_dbusd_t, session_dbusd_runtime_t)
 	')
+
+	optional_policy(`
+		init_dbus_chat($1_dbusd_t)
+		dbus_system_bus_client($1_dbusd_t)
+	')
+
+	optional_policy(`
+		xdg_read_data_files($1_dbusd_t)
+	')
 ')
 
 #######################################
Index: refpolicy-2.20210908/policy/modules/services/ssh.if
===================================================================
--- refpolicy-2.20210908.orig/policy/modules/services/ssh.if
+++ refpolicy-2.20210908/policy/modules/services/ssh.if
@@ -440,6 +440,7 @@ template(`ssh_role_template',`
 		xserver_use_xdm_fds($1_ssh_agent_t)
 		xserver_rw_xdm_pipes($1_ssh_agent_t)
 		xserver_sigchld_xdm($1_ssh_agent_t)
+		xserver_write_inherited_xsession_log($1_ssh_agent_t)
 	')
 ')
 
Index: refpolicy-2.20210908/policy/modules/kernel/corecommands.te
===================================================================
--- refpolicy-2.20210908.orig/policy/modules/kernel/corecommands.te
+++ refpolicy-2.20210908/policy/modules/kernel/corecommands.te
@@ -13,7 +13,7 @@ attribute exec_type;
 #
 # bin_t is the type of files in the system bin/sbin directories.
 #
-type bin_t alias { ls_exec_t sbin_t };
+type bin_t alias { ls_exec_t sbin_t systemd_analyze_exec_t };
 corecmd_executable_file(bin_t)
 dev_associate(bin_t)	#For /dev/MAKEDEV
 
Index: refpolicy-2.20210908/policy/modules/system/systemd.te
===================================================================
--- refpolicy-2.20210908.orig/policy/modules/system/systemd.te
+++ refpolicy-2.20210908/policy/modules/system/systemd.te
@@ -65,10 +65,6 @@ type systemd_activate_t;
 type systemd_activate_exec_t;
 init_system_domain(systemd_activate_t, systemd_activate_exec_t)
 
-type systemd_analyze_t;
-type systemd_analyze_exec_t;
-init_daemon_domain(systemd_analyze_t, systemd_analyze_exec_t)
-
 type systemd_backlight_t;
 type systemd_backlight_exec_t;
 init_system_domain(systemd_backlight_t, systemd_backlight_exec_t)
@@ -1462,6 +1458,7 @@ tunable_policy(`systemd_tmpfilesd_factor
 ')
 
 optional_policy(`
+	dbus_manage_lib_files(systemd_tmpfiles_t)
 	dbus_read_lib_files(systemd_tmpfiles_t)
 	dbus_relabel_lib_dirs(systemd_tmpfiles_t)
 ')
Index: refpolicy-2.20210908/policy/modules/services/cron.te
===================================================================
--- refpolicy-2.20210908.orig/policy/modules/services/cron.te
+++ refpolicy-2.20210908/policy/modules/services/cron.te
@@ -486,6 +486,7 @@ kernel_getattr_core_if(system_cronjob_t)
 kernel_getattr_message_if(system_cronjob_t)
 
 kernel_read_crypto_sysctls(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)
Index: refpolicy-2.20210908/policy/modules/apps/pulseaudio.te
===================================================================
--- refpolicy-2.20210908.orig/policy/modules/apps/pulseaudio.te
+++ refpolicy-2.20210908/policy/modules/apps/pulseaudio.te
@@ -156,6 +156,7 @@ userdom_search_user_home_content(pulseau
 userdom_manage_user_tmp_dirs(pulseaudio_t)
 userdom_manage_user_tmp_files(pulseaudio_t)
 userdom_manage_user_tmp_sockets(pulseaudio_t)
+userdom_write_all_user_runtime_named_sockets(pulseaudio_t)
 
 tunable_policy(`pulseaudio_execmem',`
 	allow pulseaudio_t self:process execmem;
Index: refpolicy-2.20210908/policy/modules/services/ntp.te
===================================================================
--- refpolicy-2.20210908.orig/policy/modules/services/ntp.te
+++ refpolicy-2.20210908/policy/modules/services/ntp.te
@@ -130,6 +130,7 @@ term_use_ptmx(ntpd_t)
 auth_use_nsswitch(ntpd_t)
 
 init_exec_script_files(ntpd_t)
+init_get_generic_units_status(ntpd_t)
 
 logging_send_syslog_msg(ntpd_t)
 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] strict policy patches
  2021-10-09 10:05 [PATCH] strict policy patches Russell Coker
@ 2021-10-11 16:12 ` Daniel Burgener
  2021-10-11 16:32   ` Dominick Grift
  2021-10-27 13:09 ` Chris PeBenito
  1 sibling, 1 reply; 4+ messages in thread
From: Daniel Burgener @ 2021-10-11 16:12 UTC (permalink / raw)
  To: Russell Coker, selinux-refpolicy


> ===================================================================
> --- refpolicy-2.20210908.orig/policy/modules/system/systemd.te
> +++ refpolicy-2.20210908/policy/modules/system/systemd.te
> @@ -65,10 +65,6 @@ type systemd_activate_t;
>   type systemd_activate_exec_t;
>   init_system_domain(systemd_activate_t, systemd_activate_exec_t)
>   
> -type systemd_analyze_t;
> -type systemd_analyze_exec_t;
> -init_daemon_domain(systemd_analyze_t, systemd_analyze_exec_t)
> -
>   type systemd_backlight_t;
>   type systemd_backlight_exec_t;
>   init_system_domain(systemd_backlight_t, systemd_backlight_exec_t)

I proposed a similar change last year here and the consensus in the PR 
discussion was that it would make more sense to add policy for the 
systemd_analyze_t domain for cases that wanted a transition there, but 
keeping the general approach of running in the parent domain.

https://github.com/SELinuxProject/refpolicy/pull/321

Of course, no one has actually submitted systemd_analyze_t policy yet, 
so maybe the demand for such a use case isn't all that high?

-Daniel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] strict policy patches
  2021-10-11 16:12 ` Daniel Burgener
@ 2021-10-11 16:32   ` Dominick Grift
  0 siblings, 0 replies; 4+ messages in thread
From: Dominick Grift @ 2021-10-11 16:32 UTC (permalink / raw)
  To: Daniel Burgener; +Cc: Russell Coker, selinux-refpolicy

Daniel Burgener <dburgener@linux.microsoft.com> writes:

>> ===================================================================
>> --- refpolicy-2.20210908.orig/policy/modules/system/systemd.te
>> +++ refpolicy-2.20210908/policy/modules/system/systemd.te
>> @@ -65,10 +65,6 @@ type systemd_activate_t;
>>   type systemd_activate_exec_t;
>>   init_system_domain(systemd_activate_t, systemd_activate_exec_t)
>>   -type systemd_analyze_t;
>> -type systemd_analyze_exec_t;
>> -init_daemon_domain(systemd_analyze_t, systemd_analyze_exec_t)
>> -
>>   type systemd_backlight_t;
>>   type systemd_backlight_exec_t;
>>   init_system_domain(systemd_backlight_t, systemd_backlight_exec_t)
>
> I proposed a similar change last year here and the consensus in the PR
> discussion was that it would make more sense to add policy for the 
> systemd_analyze_t domain for cases that wanted a transition there, but
> keeping the general approach of running in the parent domain.
>
> https://github.com/SELinuxProject/refpolicy/pull/321
>
> Of course, no one has actually submitted systemd_analyze_t policy yet,
> so maybe the demand for such a use case isn't all that high?
>
> -Daniel
>

I think I might have argued for keeping it around back then but I do not mind
removing it now. It certainly is not an init_daemon_domain(). One can
always add it later if needed.

-- 
gpg --locate-keys dominick.grift@defensec.nl
Key fingerprint = FCD2 3660 5D6B 9D27 7FC6  E0FF DA7E 521F 10F6 4098
Dominick Grift

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] strict policy patches
  2021-10-09 10:05 [PATCH] strict policy patches Russell Coker
  2021-10-11 16:12 ` Daniel Burgener
@ 2021-10-27 13:09 ` Chris PeBenito
  1 sibling, 0 replies; 4+ messages in thread
From: Chris PeBenito @ 2021-10-27 13:09 UTC (permalink / raw)
  To: Russell Coker, selinux-refpolicy

On 10/9/21 06:05, Russell Coker wrote:
> Allow user domains to read kernel sysctls and crypto sysctls.
> 
> Add userdom_write_all_user_runtime_named_sockets interface (for pulseaudio_t).
> 
> Give sysadm_t more access.
> 
> Give dbus domains a little more access.
> 
> Allow ssh agent to write to an inherited log file from the X server.
> 
> Make systemd_analyze_exec_t an alias for bin_t and remove systemd_analyze_t
> omain.
> 
> Allow system cronjobs to read fs sysctls.
> 
> Signed-off-by: Russell Coker <russell@coker.com.au>

[...]
> Index: refpolicy-2.20210908/policy/modules/roles/sysadm.te
> ===================================================================
> --- refpolicy-2.20210908.orig/policy/modules/roles/sysadm.te
> +++ refpolicy-2.20210908/policy/modules/roles/sysadm.te
> @@ -33,11 +33,22 @@ ifndef(`enable_mls',`
>   # Local policy
>   #
>   
> +allow sysadm_t self:netlink_generic_socket { create setopt bind write read };
> +
> +# for ptrace
> +allow sysadm_t self:netlink_tcpdiag_socket { create write nlmsg_read read };
> +
> +allow sysadm_t self:capability audit_write;
> +allow sysadm_t self:system status;

This seems a bit odd.  I would have expected sysadm_systemd_t would be the 
target.  Was the sysadm systemd --user session running in sysadm_t?


>   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)
>   
>   logging_watch_all_logs(sysadm_t)
> @@ -58,6 +69,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)
> @@ -1033,6 +1047,10 @@ optional_policy(`
>   ')
>   
>   optional_policy(`
> +	systemd_dbus_chat_logind(sysadm_t)
> +')
> +
> +optional_policy(`
>   	tboot_run_txtstat(sysadm_t, sysadm_r)
>   ')
>   
> @@ -1100,6 +1118,7 @@ optional_policy(`
>   ')
>   
>   optional_policy(`
> +	dev_rw_generic_usb_dev(sysadm_t)

Is this related to usbmodules?

>   	usbmodules_run(sysadm_t, sysadm_r)
>   ')
>   
> Index: refpolicy-2.20210908/policy/modules/services/xserver.if
> ===================================================================
> --- refpolicy-2.20210908.orig/policy/modules/services/xserver.if
> +++ refpolicy-2.20210908/policy/modules/services/xserver.if
> @@ -100,6 +100,7 @@ interface(`xserver_restricted_role',`
>   	xserver_xsession_entry_type($2)
>   	xserver_dontaudit_write_log($2)
>   	xserver_stream_connect_xdm($2)
> +	xserver_use_user_fonts($2)
>   	# certain apps want to read xdm.pid file
>   	xserver_read_xdm_runtime_files($2)
>   	# gnome-session creates socket under /tmp/.ICE-unix/
> @@ -141,7 +142,7 @@ interface(`xserver_role',`
>   	gen_require(`
>   		type iceauth_home_t, xserver_t, xserver_tmp_t, xserver_tmpfs_t, xauth_home_t;
>   		type user_fonts_t, user_fonts_cache_t, user_fonts_config_t;
> -		type mesa_shader_cache_t;
> +		type mesa_shader_cache_t, xdm_t;
>   	')
>   
>   	xserver_restricted_role($1, $2)
> @@ -184,6 +185,8 @@ interface(`xserver_role',`
>   
>   	xserver_read_xkb_libs($2)
>   
> +	allow $2 xdm_t:unix_stream_socket accept;

Do you have any context on this?  Userdomains don't have read/write xdm_t 
unix_stream_socket access, so they wouldn't be able to do anything with it.


> +
>   	optional_policy(`
>   		xdg_cache_filetrans($2, mesa_shader_cache_t, dir, "mesa_shader_cache")
>   	')
> @@ -1224,6 +1227,7 @@ interface(`xserver_read_xkb_libs',`
>   	allow $1 xkb_var_lib_t:dir list_dir_perms;
>   	read_files_pattern($1, xkb_var_lib_t, xkb_var_lib_t)
>   	read_lnk_files_pattern($1, xkb_var_lib_t, xkb_var_lib_t)
> +	allow $1 xkb_var_lib_t:file map;
>   ')
>   
>   ########################################
> Index: refpolicy-2.20210908/policy/modules/services/dbus.if
> ===================================================================
> --- refpolicy-2.20210908.orig/policy/modules/services/dbus.if
> +++ refpolicy-2.20210908/policy/modules/services/dbus.if
> @@ -85,6 +85,7 @@ template(`dbus_role_template',`
>   
>   	allow $3 $1_dbusd_t:unix_stream_socket connectto;
>   	allow $3 $1_dbusd_t:dbus { send_msg acquire_svc };
> +	allow $1_dbusd_t $3:dbus send_msg;
>   	allow $3 $1_dbusd_t:fd use;
>   
>   	dontaudit $1_dbusd_t self:process getcap;
> @@ -103,9 +104,13 @@ template(`dbus_role_template',`
>   
>   	allow $1_dbusd_t $3:process sigkill;
>   
> +	allow $1_dbusd_t self:process getcap;
> +
>   	corecmd_bin_domtrans($1_dbusd_t, $3)
>   	corecmd_shell_domtrans($1_dbusd_t, $3)
>   
> +	dev_read_sysfs($1_dbusd_t)
> +
>   	auth_use_nsswitch($1_dbusd_t)
>   
>   	ifdef(`hide_broken_symptoms',`
> @@ -117,6 +122,15 @@ template(`dbus_role_template',`
>   		systemd_user_daemon_domain($1, dbusd_exec_t, $1_dbusd_t)
>   		systemd_user_unix_stream_activated_socket($1_dbusd_t, session_dbusd_runtime_t)
>   	')
> +
> +	optional_policy(`
> +		init_dbus_chat($1_dbusd_t)
> +		dbus_system_bus_client($1_dbusd_t)

This opens up bridging the user session busses to the system bus. I don't think 
we want this.

> +	')
> +
> +	optional_policy(`
> +		xdg_read_data_files($1_dbusd_t)
> +	')
>   ')


-- 
Chris PeBenito

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-10-27 13:11 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-09 10:05 [PATCH] strict policy patches Russell Coker
2021-10-11 16:12 ` Daniel Burgener
2021-10-11 16:32   ` Dominick Grift
2021-10-27 13:09 ` Chris PeBenito

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.