commit:     aea06ce4e637cca4e2560b67fffbc62708752326
Author:     Russell Coker <russell <AT> coker <DOT> com <DOT> au>
AuthorDate: Mon Jul 14 14:30:37 2025 +0000
Commit:     Jason Zaman <perfinion <AT> gentoo <DOT> org>
CommitDate: Tue Jul 15 08:04:55 2025 +0000
URL:        
https://gitweb.gentoo.org/proj/hardened-refpolicy.git/commit/?id=aea06ce4

chromium (#965)

* Changes needed for newer versions of chrome/chromium and path names for MS 
Edge.

Signed-off-by: Russell Coker <russell <AT> coker.com.au>
Signed-off-by: Jason Zaman <perfinion <AT> gentoo.org>

 policy/modules/apps/chromium.fc           | 10 +++++++
 policy/modules/apps/chromium.if           |  3 ++
 policy/modules/apps/chromium.te           | 48 +++++++++++++++++++++++++++++++
 policy/modules/apps/gnome.if              | 18 ++++++++++++
 policy/modules/apps/wm.if                 | 19 ++++++++++++
 policy/modules/services/dbus.if           | 19 ++++++++++++
 policy/modules/services/networkmanager.if | 18 ++++++++++++
 policy/modules/system/systemd.if          | 38 ++++++++++++++++++++++++
 8 files changed, 173 insertions(+)

diff --git a/policy/modules/apps/chromium.fc b/policy/modules/apps/chromium.fc
index f45e35224..c20a39ed6 100644
--- a/policy/modules/apps/chromium.fc
+++ b/policy/modules/apps/chromium.fc
@@ -3,6 +3,8 @@
 /opt/google/chrome/chrome-sandbox                      --      
gen_context(system_u:object_r:chromium_sandbox_exec_t,s0)
 /opt/google/chrome/google-chrome                       --      
gen_context(system_u:object_r:chromium_exec_t,s0)
 /opt/google/chrome/nacl_.*                             --      
gen_context(system_u:object_r:chromium_naclhelper_exec_t,s0)
+/opt/google/chrome/crashpad_handler                    --      
gen_context(system_u:object_r:chromium_exec_t,s0)
+/opt/google/chrome/chrome_crashpad_handler             --      
gen_context(system_u:object_r:chromium_exec_t,s0)
 
 /opt/google/chrome-beta/chrome                         --      
gen_context(system_u:object_r:chromium_exec_t,s0)
 /opt/google/chrome-beta/chrome_sandbox                 --      
gen_context(system_u:object_r:chromium_sandbox_exec_t,s0)
@@ -16,8 +18,14 @@
 /opt/google/chrome-unstable/google-chrome              --      
gen_context(system_u:object_r:chromium_exec_t,s0)
 /opt/google/chrome-unstable/nacl_helper_bootstrap      --      
gen_context(system_u:object_r:chromium_naclhelper_exec_t,s0)
 
+/opt/microsoft/msedge/msedge                           --      
gen_context(system_u:object_r:chromium_exec_t,s0)
+/opt/microsoft/msedge/microsoft-edge                   --      
gen_context(system_u:object_r:chromium_exec_t,s0)
+/opt/microsoft/msedge/msedge-sandbox                   --      
gen_context(system_u:object_r:chromium_sandbox_exec_t,s0)
+/opt/microsoft/msedge/msedge_crashpad_handler          --      
gen_context(system_u:object_r:chromium_exec_t,s0)
+
 /usr/lib/chromium/chromium                             --      
gen_context(system_u:object_r:chromium_exec_t,s0)
 /usr/lib/chromium/chrome-sandbox                       --      
gen_context(system_u:object_r:chromium_sandbox_exec_t,s0)
+/usr/lib/chromium/chrome_crashpad_handler              --      
gen_context(system_u:object_r:chromium_exec_t,s0)
 /usr/lib/chromium-browser/chrome                       --      
gen_context(system_u:object_r:chromium_exec_t,s0)
 /usr/lib/chromium-browser/chrome_sandbox               --      
gen_context(system_u:object_r:chromium_sandbox_exec_t,s0)
 /usr/lib/chromium-browser/chrome-sandbox               --      
gen_context(system_u:object_r:chromium_sandbox_exec_t,s0)
@@ -26,5 +34,7 @@
 
 HOME_DIR/\.cache/chromium(/.*)?                                        
gen_context(system_u:object_r:chromium_xdg_cache_t,s0)
 HOME_DIR/\.cache/google-chrome(/.*)?                           
gen_context(system_u:object_r:chromium_xdg_cache_t,s0)
+HOME_DIR/\.cache/microsoft-edge(/.*)?                          
gen_context(system_u:object_r:chromium_xdg_cache_t,s0)
 HOME_DIR/\.config/chromium(/.*)?                               
gen_context(system_u:object_r:chromium_xdg_config_t,s0)
 HOME_DIR/\.config/google-chrome(/.*)?                          
gen_context(system_u:object_r:chromium_xdg_config_t,s0)
+HOME_DIR/\.config/microsoft-edge(/.*)?                         
gen_context(system_u:object_r:chromium_xdg_config_t,s0)

diff --git a/policy/modules/apps/chromium.if b/policy/modules/apps/chromium.if
index e087c8ac0..ce8706442 100644
--- a/policy/modules/apps/chromium.if
+++ b/policy/modules/apps/chromium.if
@@ -52,6 +52,9 @@ template(`chromium_role',`
        allow $3 chromium_sandbox_t:process signal_perms;
        allow $3 chromium_naclhelper_t:process signal_perms;
        allow chromium_t $3:process { signal signull };
+       allow chromium_t $3:unix_stream_socket { read write };
+
+       allow $2 chromium_t:fifo_file write;
 
        allow $3 chromium_t:unix_stream_socket connectto;
 

diff --git a/policy/modules/apps/chromium.te b/policy/modules/apps/chromium.te
index 94e53816c..0a2486373 100644
--- a/policy/modules/apps/chromium.te
+++ b/policy/modules/apps/chromium.te
@@ -15,6 +15,20 @@ policy_module(chromium)
 ## </desc>
 gen_tunable(chromium_dri, true)
 
+## <desc>
+## <p>
+## Allow chromium to execute heap
+## </p>
+## </desc>
+gen_tunable(chromium_exec_heap, false)
+
+## <desc>
+## <p>
+## Allow chromium to ptrace itself
+## </p>
+## </desc>
+gen_tunable(chromium_ptrace, false)
+
 ## <desc>
 ## <p>
 ## Allow chromium to read system information
@@ -115,6 +129,7 @@ allow chromium_t chromium_sandbox_t:unix_stream_socket { 
getattr read write };
 allow chromium_t chromium_sandbox_t:file read_file_perms;
 
 allow chromium_t chromium_naclhelper_t:process { share };
+allow chromium_t chromium_naclhelper_t:process2 nnp_transition;
 
 # tmp has a wide class access (used for plugins)
 manage_files_pattern(chromium_t, chromium_tmp_t, chromium_tmp_t)
@@ -152,9 +167,12 @@ kernel_associate_proc(chromium_t)
 
 kernel_get_sysvipc_info(chromium_t)
 kernel_list_proc(chromium_t)
+kernel_read_device_sysctls(chromium_t)
 kernel_read_fs_sysctls(chromium_t)
 kernel_read_kernel_sysctls(chromium_t)
 kernel_read_net_sysctls(chromium_t)
+kernel_read_psi(chromium_t)
+kernel_read_vm_overcommit_sysctl(chromium_t)
 
 corecmd_exec_bin(chromium_t)
 # Look for /etc/gentoo-release through a shell invocation running find
@@ -183,6 +201,9 @@ files_read_usr_files(chromium_t)
 files_map_usr_files(chromium_t)
 files_read_etc_files(chromium_t)
 files_watch_etc_dirs(chromium_t)
+files_watch_root_dirs(chromium_t)
+files_watch_runtime_dirs(chromium_t)
+
 # During find for /etc/whatever-release we get lots of output otherwise
 files_dontaudit_getattr_all_dirs(chromium_t)
 
@@ -193,6 +214,8 @@ fs_search_cgroup_dirs(chromium_t)
 miscfiles_read_all_certs(chromium_t)
 miscfiles_read_localization(chromium_t)
 
+mount_list_runtime(chromium_t)
+
 sysnet_dns_name_resolve(chromium_t)
 
 # for /run/udev/data/*
@@ -226,6 +249,14 @@ tunable_policy(`chromium_dri', `
        dev_rw_dri(chromium_t)
 ')
 
+tunable_policy(`chromium_exec_heap',`
+       allow chromium_t self:process { execheap };
+')
+
+tunable_policy(`chromium_ptrace',`
+       allow chromium_t self:process { ptrace };
+')
+
 tunable_policy(`chromium_rw_usb_dev',`
        dev_rw_generic_usb_dev(chromium_t)
 ')
@@ -253,6 +284,10 @@ tunable_policy(`chromium_read_system_info',`
        files_dontaudit_read_etc_runtime_files(chromium_t)
 ')
 
+optional_policy(`
+       alsa_read_config(chromium_t)
+')
+
 optional_policy(`
        cups_read_config(chromium_t)
        cups_stream_connect(chromium_t)
@@ -260,7 +295,10 @@ optional_policy(`
 
 optional_policy(`
        dbus_all_session_bus_client(chromium_t)
+       dbus_send_fifo_file_all_session_bus(chromium_t)
        dbus_system_bus_client(chromium_t)
+       dbus_getattr_session_runtime_socket(chromium_t)
+       dbus_write_session_runtime_socket(chromium_t)
 
        optional_policy(`
                unconfined_dbus_chat(chromium_t)
@@ -268,6 +306,7 @@ optional_policy(`
 
        optional_policy(`
                gnome_dbus_chat_all_gkeyringd(chromium_t)
+               gnome_watch_xdg_config_dirs(chromium_t)
        ')
 
        optional_policy(`
@@ -276,6 +315,7 @@ optional_policy(`
        ')
 
        optional_policy(`
+               systemd_list_resolved_runtime(chromium_t)
                systemd_dbus_chat_hostnamed(chromium_t)
        ')
 ')
@@ -289,12 +329,17 @@ optional_policy(`
 
 optional_policy(`
        networkmanager_dbus_chat(chromium_t)
+       networkmanager_watch_runtime_dirs(chromium_t)
 ')
 
 optional_policy(`
        ssh_dontaudit_agent_tmp(chromium_t)
 ')
 
+optional_policy(`
+       wm_mmap_rw_tmpfs_files(chromium_t)
+')
+
 ########################################
 #
 # chromium_renderer local policy
@@ -383,6 +428,9 @@ allow chromium_naclhelper_t self:user_namespace create;
 allow chromium_naclhelper_t chromium_t:unix_stream_socket { getattr read write 
};
 allow chromium_naclhelper_t chromium_sandbox_t:unix_stream_socket { getattr 
read write };
 
+allow chromium_naclhelper_t self:cap_userns { sys_admin sys_chroot };
+allow chromium_naclhelper_t self:process { setcap signal };
+
 dev_read_sysfs(chromium_naclhelper_t)
 dev_read_urand(chromium_naclhelper_t)
 

diff --git a/policy/modules/apps/gnome.if b/policy/modules/apps/gnome.if
index 33bc699c1..59891c4ff 100644
--- a/policy/modules/apps/gnome.if
+++ b/policy/modules/apps/gnome.if
@@ -814,3 +814,21 @@ interface(`gnome_mmap_gstreamer_orcexec',`
 
        allow $1 gstreamer_orcexec_t:file mmap_exec_file_perms;
 ')
+
+########################################
+## <summary>
+##     watch gnome_xdg_config_t dirs
+## </summary>
+## <param name="domain">
+##     <summary>
+##     Domain allowed access.
+##     </summary>
+## </param>
+#
+interface(`gnome_watch_xdg_config_dirs',`
+       gen_require(`
+               type gnome_xdg_config_t;
+       ')
+
+       allow $1 gnome_xdg_config_t:dir watch;
+')

diff --git a/policy/modules/apps/wm.if b/policy/modules/apps/wm.if
index d65518218..d9db68c98 100644
--- a/policy/modules/apps/wm.if
+++ b/policy/modules/apps/wm.if
@@ -184,6 +184,25 @@ interface(`wm_dontaudit_exec_tmp_files',`
        dontaudit $1 wm_tmp_t:file exec_file_perms;
 ')
 
+########################################
+## <summary>
+##     mmap and read-write files in temporary filesystems.
+## </summary>
+## <param name="domain">
+##     <summary>
+##     Domain to allow
+##     </summary>
+## </param>
+#
+interface(`wm_mmap_rw_tmpfs_files',`
+       gen_require(`
+               type wm_tmpfs_t;
+       ')
+
+       fs_list_tmpfs($1)
+       allow $1 wm_tmpfs_t:file mmap_rw_file_perms;
+')
+
 ########################################
 ## <summary>
 ##     Do not audit attempts to execute

diff --git a/policy/modules/services/dbus.if b/policy/modules/services/dbus.if
index 699c78b25..332a3823c 100644
--- a/policy/modules/services/dbus.if
+++ b/policy/modules/services/dbus.if
@@ -202,6 +202,25 @@ interface(`dbus_connect_all_session_bus',`
        allow $1 session_bus_type:dbus acquire_svc;
 ')
 
+#######################################
+## <summary>
+##     send file to all session busses.
+## </summary>
+## <param name="domain">
+##     <summary>
+##     Domain allowed access.
+##     </summary>
+## </param>
+#
+interface(`dbus_send_fifo_file_all_session_bus',`
+       gen_require(`
+               attribute session_bus_type;
+       ')
+
+       allow session_bus_type $1:fd use;
+       allow session_bus_type $1:fifo_file rw_inherited_fifo_file_perms;
+')
+
 #######################################
 ## <summary>
 ##     Acquire service on specified

diff --git a/policy/modules/services/networkmanager.if 
b/policy/modules/services/networkmanager.if
index 364c9a931..353f174e8 100644
--- a/policy/modules/services/networkmanager.if
+++ b/policy/modules/services/networkmanager.if
@@ -290,6 +290,24 @@ interface(`networkmanager_read_runtime_files',`
        read_files_pattern($1, NetworkManager_runtime_t, 
NetworkManager_runtime_t)
 ')
 
+########################################
+## <summary>
+##     watch networkmanager runtime files.
+## </summary>
+## <param name="domain">
+##     <summary>
+##     Domain allowed access.
+##     </summary>
+## </param>
+#
+interface(`networkmanager_watch_runtime_dirs',`
+       gen_require(`
+               type NetworkManager_runtime_t;
+       ')
+
+       allow $1 NetworkManager_runtime_t:dir watch;
+')
+
 ####################################
 ## <summary>
 ##  Connect to networkmanager over

diff --git a/policy/modules/system/systemd.if b/policy/modules/system/systemd.if
index 7e58453df..feddd0ace 100644
--- a/policy/modules/system/systemd.if
+++ b/policy/modules/system/systemd.if
@@ -2909,6 +2909,44 @@ interface(`systemd_signal_all_user_sessions',`
        allow $1 systemd_user_session_type:process signal;
 ')
 
+########################################
+## <summary>
+##     start all systemd --user domains.
+## </summary>
+## <param name="domain">
+##     <summary>
+##     Domain allowed access.
+##     </summary>
+## </param>
+#
+interface(`systemd_start_all_user_sessions',`
+       gen_require(`
+               class system { start };
+               attribute systemd_user_session_type;
+       ')
+
+       allow $1 systemd_user_session_type:system start;
+')
+
+########################################
+## <summary>
+##     get status of all systemd --user domains.
+## </summary>
+## <param name="domain">
+##     <summary>
+##     Domain allowed access.
+##     </summary>
+## </param>
+#
+interface(`systemd_status_all_user_sessions',`
+       gen_require(`
+               class system { status };
+               attribute systemd_user_session_type;
+       ')
+
+       allow $1 systemd_user_session_type:system status;
+')
+
 ########################################
 ## <summary>
 ##  Execute systemd-sysusers in the

Reply via email to