commit: c0cd142f78e3bf2ed7a83595f3bbee985b00234a
Author: Yi Zhao <yi.zhao <AT> windriver <DOT> com>
AuthorDate: Fri Aug 30 03:46:34 2024 +0000
Commit: Jason Zaman <perfinion <AT> gentoo <DOT> org>
CommitDate: Sat Sep 21 22:28:29 2024 +0000
URL:
https://gitweb.gentoo.org/proj/hardened-refpolicy.git/commit/?id=c0cd142f
devices: add label vsock_device_t for /dev/vsock
Vsock is a Linux socket family designed to allow communication between a
VM and its hypervisor. Add a new label vsock_device_t for vsock device.
Signed-off-by: Yi Zhao <yi.zhao <AT> windriver.com>
Signed-off-by: Jason Zaman <perfinion <AT> gentoo.org>
policy/modules/kernel/devices.fc | 1 +
policy/modules/kernel/devices.if | 54 ++++++++++++++++++++++++++++++++++++++++
policy/modules/kernel/devices.te | 6 +++++
3 files changed, 61 insertions(+)
diff --git a/policy/modules/kernel/devices.fc b/policy/modules/kernel/devices.fc
index fb3010308..5d7d2a4c1 100644
--- a/policy/modules/kernel/devices.fc
+++ b/policy/modules/kernel/devices.fc
@@ -134,6 +134,7 @@ ifdef(`distro_suse', `
')
/dev/vbi.* -c gen_context(system_u:object_r:v4l_device_t,s0)
/dev/vbox.* -c
gen_context(system_u:object_r:xserver_misc_device_t,s0)
+/dev/vsock -c gen_context(system_u:object_r:vsock_device_t,s0)
/dev/vfio/.+ -c gen_context(system_u:object_r:vfio_device_t,s0)
/dev/vga_arbiter -c
gen_context(system_u:object_r:xserver_misc_device_t,s0)
/dev/vhci -c
gen_context(system_u:object_r:vhost_device_t,s0)
diff --git a/policy/modules/kernel/devices.if b/policy/modules/kernel/devices.if
index aabc1b8e7..930f164e9 100644
--- a/policy/modules/kernel/devices.if
+++ b/policy/modules/kernel/devices.if
@@ -5556,6 +5556,60 @@ interface(`dev_rwx_vmware',`
allow $1 vmware_device_t:chr_file { execute map };
')
+########################################
+## <summary>
+## Read the vsock device.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`dev_read_vsock',`
+ gen_require(`
+ type device_t, vsock_device_t;
+ ')
+
+ read_chr_files_pattern($1, device_t, vsock_device_t)
+')
+
+########################################
+## <summary>
+## Write the vsock device.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`dev_write_vsock',`
+ gen_require(`
+ type device_t, vsock_device_t;
+ ')
+
+ write_chr_files_pattern($1, device_t, vsock_device_t)
+')
+
+########################################
+## <summary>
+## Read and write the vsock device.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`dev_rw_vsock',`
+ gen_require(`
+ type device_t, vsock_device_t;
+ ')
+
+ rw_chr_files_pattern($1, device_t, vsock_device_t)
+')
+
########################################
## <summary>
## Read from watchdog devices.
diff --git a/policy/modules/kernel/devices.te b/policy/modules/kernel/devices.te
index c06a77ade..255a30b09 100644
--- a/policy/modules/kernel/devices.te
+++ b/policy/modules/kernel/devices.te
@@ -402,6 +402,12 @@ dev_node(vhost_device_t)
type vmware_device_t;
dev_node(vmware_device_t)
+#
+# vsock_device_t is the type for /dev/vsock
+#
+type vsock_device_t;
+dev_node(vsock_device_t)
+
type watchdog_device_t;
dev_node(watchdog_device_t)