commit:     509999a0c42ac1eb95fac9314d683a45639ef9ac
Author:     Dave Sugar <dsugar100 <AT> gmail <DOT> com>
AuthorDate: Wed Dec 13 16:52:01 2023 +0000
Commit:     Jason Zaman <perfinion <AT> gentoo <DOT> org>
CommitDate: Sun Dec 15 00:19:42 2024 +0000
URL:        
https://gitweb.gentoo.org/proj/hardened-refpolicy.git/commit/?id=509999a0
Add support for open-vm-tools

node=localhost type=AVC msg=audit(1732592552.733:8660): avc:  denied  { create 
} for  pid=1006 comm="vmtoolsd" scontext=system_u:system_r:initrc_t:s0 
tcontext=system_u:system_r:initrc_t:s0 tclass=vsock_socket permissive=0
node=localhost type=AVC msg=audit(1732592232.142:477): avc:  denied  { create } 
for  pid=1005 comm="VGAuthService" scontext=system_u:system_r:initrc_t:s0 
tcontext=system_u:system_r:initrc_t:s0 tclass=vsock_socket permissive=0
node=localhost type=AVC msg=audit(1732592232.516:506): avc:  denied  { read 
write } for  pid=1006 comm="vmtoolsd" name="card0" dev="devtmpfs" ino=275 
scontext=system_u:system_r:initrc_t:s0 
tcontext=system_u:object_r:dri_device_t:s0 tclass=chr_file permissive=0
node=localhost type=AVC msg=audit(1732592232.194:479): avc:  denied  { create } 
for  pid=1005 comm="VGAuthService" name="vmware" 
scontext=system_u:system_r:initrc_t:s0 tcontext=system_u:object_r:var_lib_t:s0 
tclass=dir permissive=0

Signed-off-by: Dave Sugar <dsugar100 <AT> gmail.com>
Signed-off-by: Jason Zaman <perfinion <AT> gentoo.org>

 policy/modules/apps/vmware.fc    |  14 +++++
 policy/modules/apps/vmware.if    |  19 +++++++
 policy/modules/apps/vmware.te    | 111 +++++++++++++++++++++++++++++++++++++++
 policy/modules/kernel/devices.fc |   1 +
 4 files changed, 145 insertions(+)

diff --git a/policy/modules/apps/vmware.fc b/policy/modules/apps/vmware.fc
index b15577212..aadfd433f 100644
--- a/policy/modules/apps/vmware.fc
+++ b/policy/modules/apps/vmware.fc
@@ -4,23 +4,37 @@ HOME_DIR/vmware(/.*)? 
gen_context(system_u:object_r:vmware_file_t,s0)
 
 /etc/vmware.*(/.*)?    gen_context(system_u:object_r:vmware_sys_conf_t,s0)
 
+/usr/bin/VGAuthService --      
gen_context(system_u:object_r:vmware_vgauth_service_exec_t,s0)
+/usr/bin/vmtoolsd              --      
gen_context(system_u:object_r:vmware_tools_exec_t,s0)
+
 /usr/bin/vmnet-bridge  --      
gen_context(system_u:object_r:vmware_host_exec_t,s0)
 /usr/bin/vmnet-dhcpd   --      
gen_context(system_u:object_r:vmware_host_exec_t,s0)
 /usr/bin/vmnet-natd    --      
gen_context(system_u:object_r:vmware_host_exec_t,s0)
 /usr/bin/vmnet-netifup --      
gen_context(system_u:object_r:vmware_host_exec_t,s0)
 /usr/bin/vmnet-sniffer --      
gen_context(system_u:object_r:vmware_host_exec_t,s0)
+/usr/bin/vmware-alias-import   --      
gen_context(system_u:object_r:vmware_exec_t,s0)
+/usr/bin/vmware-checkvm        --      
gen_context(system_u:object_r:vmware_exec_t,s0)
 /usr/bin/vmware-guest.*        --      
gen_context(system_u:object_r:vmware_host_exec_t,s0)
+/usr/bin/vmware-hgfsclient     --      
gen_context(system_u:object_r:vmware_exec_t,s0)
+/usr/bin/vmware-namespace-cmd  --      
gen_context(system_u:object_r:vmware_exec_t,s0)
 /usr/bin/vmware-network        --      
gen_context(system_u:object_r:vmware_host_exec_t,s0)
 /usr/bin/vmware-nmbd   --      
gen_context(system_u:object_r:vmware_host_exec_t,s0)
 /usr/bin/vmware-ping   --      gen_context(system_u:object_r:vmware_exec_t,s0)
+/usr/bin/vmware-rpctool        --      
gen_context(system_u:object_r:vmware_exec_t,s0)
 /usr/bin/vmware-serverd        --      
gen_context(system_u:object_r:vmware_exec_t,s0)
 /usr/bin/vmware-smbd   --      
gen_context(system_u:object_r:vmware_host_exec_t,s0)
 /usr/bin/vmware-smbpasswd      --      
gen_context(system_u:object_r:vmware_host_exec_t,s0)
 /usr/bin/vmware-smbpasswd\.bin --      
gen_context(system_u:object_r:vmware_host_exec_t,s0)
+/usr/bin/vmware-toolbox-cmd    --      
gen_context(system_u:object_r:vmware_exec_t,s0)
+/usr/bin/vmware-vgauth-cmd     --      
gen_context(system_u:object_r:vmware_exec_t,s0)
 /usr/bin/vmware-vmx    --      
gen_context(system_u:object_r:vmware_host_exec_t,s0)
 /usr/bin/vmware-wizard --      gen_context(system_u:object_r:vmware_exec_t,s0)
+/usr/bin/vmware-xferlogs       --      
gen_context(system_u:object_r:vmware_exec_t,s0)
 /usr/bin/vmware        --      gen_context(system_u:object_r:vmware_exec_t,s0)
 
+/usr/lib/systemd/system/vgauthd\.service       --      
gen_context(system_u:object_r:vmware_unit_t,s0)
+/usr/lib/systemd/system/vmtoolsd\.service      --      
gen_context(system_u:object_r:vmware_unit_t,s0)
+
 /usr/lib/vmware/config --      
gen_context(system_u:object_r:vmware_sys_conf_t,s0)
 /usr/lib/vmware/bin/vmplayer   --      
gen_context(system_u:object_r:vmware_exec_t,s0)
 /usr/lib/vmware/bin/vmware-mks --      
gen_context(system_u:object_r:vmware_exec_t,s0)

diff --git a/policy/modules/apps/vmware.if b/policy/modules/apps/vmware.if
index ce4da5476..3e8f78b78 100644
--- a/policy/modules/apps/vmware.if
+++ b/policy/modules/apps/vmware.if
@@ -71,6 +71,25 @@ interface(`vmware_exec_host',`
        can_exec($1, vmware_host_exec_t)
 ')
 
+########################################
+## <summary>
+##     Execute vmware guest executables
+## </summary>
+## <param name="domain">
+##     <summary>
+##     Domain allowed access.
+##     </summary>
+## </param>
+#
+interface(`vmware_exec_guest',`
+       gen_require(`
+               type vmware_exec_t;
+       ')
+
+       corecmd_search_bin($1)
+       can_exec($1, vmware_exec_t)
+')
+
 ########################################
 ## <summary>
 ##     Read vmware system configuration files.

diff --git a/policy/modules/apps/vmware.te b/policy/modules/apps/vmware.te
index dfe8164cb..a4b2a00c1 100644
--- a/policy/modules/apps/vmware.te
+++ b/policy/modules/apps/vmware.te
@@ -42,6 +42,24 @@ userdom_user_tmp_file(vmware_tmp_t)
 type vmware_tmpfs_t;
 userdom_user_tmpfs_file(vmware_tmpfs_t)
 
+type vmware_tools_t;
+type vmware_tools_exec_t;
+init_daemon_domain(vmware_tools_t, vmware_tools_exec_t)
+
+type vmware_tools_tmp_t;
+userdom_user_tmp_file(vmware_tools_tmp_t)
+
+type vmware_unit_t;
+init_unit_file(vmware_unit_t)
+
+type vmware_var_lib_t;
+files_type(vmware_var_lib_t)
+
+type vmware_vgauth_service_t;
+type vmware_vgauth_service_exec_t;
+init_daemon_domain(vmware_vgauth_service_t, vmware_vgauth_service_exec_t)
+
+
 optional_policy(`
        wm_application_domain(vmware_t, vmware_exec_t)
 ')
@@ -257,3 +275,96 @@ tunable_policy(`use_samba_home_dirs',`
        fs_manage_cifs_files(vmware_t)
        fs_manage_cifs_symlinks(vmware_t)
 ')
+
+
+########################################
+#
+# Guest vmware-tools local policy
+#
+
+allow vmware_tools_t self:capability { net_bind_service sys_admin sys_time };
+allow vmware_tools_t self:fifo_file rw_inherited_fifo_file_perms;
+allow vmware_tools_t self:netlink_route_socket { create 
rw_netlink_socket_perms };
+allow vmware_tools_t self:process { getsched setsched };
+allow vmware_tools_t self:udp_socket create_socket_perms;
+allow vmware_tools_t self:unix_dgram_socket create_socket_perms;
+allow vmware_tools_t self:unix_stream_socket create_socket_perms;
+allow vmware_tools_t self:vsock_socket create_socket_perms;
+
+append_files_pattern(vmware_tools_t, vmware_log_t, vmware_log_t)
+create_files_pattern(vmware_tools_t, vmware_log_t, vmware_log_t)
+rename_files_pattern(vmware_tools_t, vmware_log_t, vmware_log_t)
+setattr_files_pattern(vmware_tools_t, vmware_log_t, vmware_log_t)
+logging_log_filetrans(vmware_tools_t, vmware_log_t, file)
+
+allow vmware_tools_t vmware_tools_tmp_t:dir { create_dir_perms 
delete_dir_perms };
+manage_files_pattern(vmware_tools_t, vmware_tools_tmp_t, vmware_tools_tmp_t)
+files_tmp_filetrans(vmware_tools_t, vmware_tools_tmp_t, { file dir })
+
+vmware_exec_guest(vmware_tools_t)
+
+corecmd_exec_bin(vmware_tools_t)
+corecmd_exec_shell(vmware_tools_t)
+
+dev_read_sysfs(vmware_tools_t)
+dev_read_vsock(vmware_tools_t)
+dev_rw_dri(vmware_tools_t)
+dev_rw_vmware(vmware_tools_t)
+
+files_read_etc_files(vmware_tools_t)
+files_read_usr_files(vmware_tools_t)
+files_search_var_lib(vmware_tools_t)
+
+fs_getattr_xattr_fs(vmware_tools_t)
+
+kernel_read_network_state(vmware_tools_t)
+kernel_read_system_state(vmware_tools_t)
+kernel_request_load_module(vmware_tools_t)
+
+dbus_system_bus_client(vmware_tools_t)
+
+init_read_state(vmware_tools_t)
+
+logging_send_syslog_msg(vmware_tools_t)
+
+miscfiles_read_localization(vmware_tools_t)
+
+systemd_dbus_chat_logind(vmware_tools_t)
+
+udev_read_runtime_files(vmware_tools_t)
+
+########################################
+#
+# Guest VGAuthService local policy
+#
+
+allow vmware_vgauth_service_t self:fifo_file rw_inherited_fifo_file_perms;
+allow vmware_vgauth_service_t self:unix_dgram_socket create_socket_perms;
+allow vmware_vgauth_service_t self:unix_stream_socket 
create_stream_socket_perms;
+allow vmware_vgauth_service_t self:vsock_socket create_socket_perms;
+
+append_files_pattern(vmware_vgauth_service_t, vmware_log_t, vmware_log_t)
+create_files_pattern(vmware_vgauth_service_t, vmware_log_t, vmware_log_t)
+setattr_files_pattern(vmware_vgauth_service_t, vmware_log_t, vmware_log_t)
+logging_log_filetrans(vmware_vgauth_service_t, vmware_log_t, file)
+
+create_dirs_pattern(vmware_vgauth_service_t, vmware_var_run_t, 
vmware_var_run_t)
+manage_files_pattern(vmware_vgauth_service_t, vmware_var_run_t, 
vmware_var_run_t)
+manage_sock_files_pattern(vmware_vgauth_service_t, vmware_var_run_t, 
vmware_var_run_t)
+files_runtime_filetrans(vmware_vgauth_service_t, vmware_var_run_t, { dir file 
sock_file })
+
+create_dirs_pattern(vmware_vgauth_service_t, vmware_var_lib_t, 
vmware_var_lib_t)
+manage_files_pattern(vmware_vgauth_service_t, vmware_var_lib_t, 
vmware_var_lib_t)
+files_var_lib_filetrans(vmware_vgauth_service_t, vmware_var_lib_t, dir, 
"vmware")
+
+corecmd_read_bin_files(vmware_vgauth_service_t)
+
+files_read_etc_files(vmware_vgauth_service_t)
+files_read_usr_files(vmware_vgauth_service_t)
+
+kernel_request_load_module(vmware_vgauth_service_t)
+
+logging_send_syslog_msg(vmware_vgauth_service_t)
+
+miscfiles_read_generic_certs(vmware_vgauth_service_t)
+miscfiles_read_localization(vmware_vgauth_service_t)

diff --git a/policy/modules/kernel/devices.fc b/policy/modules/kernel/devices.fc
index cd4062e6f..d476a293c 100644
--- a/policy/modules/kernel/devices.fc
+++ b/policy/modules/kernel/devices.fc
@@ -149,6 +149,7 @@ ifdef(`distro_suse', `
 /dev/vhost-scsi                -c      
gen_context(system_u:object_r:vhost_device_t,s0)
 /dev/vhost-vsock        -c      
gen_context(system_u:object_r:vhost_device_t,s0)
 /dev/video.*           -c      gen_context(system_u:object_r:v4l_device_t,s0)
+/dev/vmci                      -c      
gen_context(system_u:object_r:vmware_device_t,s0)
 /dev/vmmon             -c      
gen_context(system_u:object_r:vmware_device_t,s0)
 /dev/vmnet.*           -c      
gen_context(system_u:object_r:vmware_device_t,s0)
 /dev/vrtpanel          -c      gen_context(system_u:object_r:mouse_device_t,s0)

Reply via email to