Re: DirtyClone etc

Dominick Grift <[email protected]> Tue, 30 Jun 2026 14:40:52 +0200
Newsgroups org.kernel.vger.selinux-refpolicy
Message-ID <[email protected]>
Russell Coker <[email protected]> writes:

> https://research.jfrog.com/post/dissecting-and-exploiting-linux-lpe-variant-dirtyclone-cve-2026-43503/
>
> This is the latest kernel exploit which relies on creating a container with 
> "unshare -Urn" or "bwrap --bind / / --unshare-user --unshare-net --uid 0 --gid 
> 0 /bin/bash" and having self:cap_userns net_admin access in that container.  
>
> Should we have some neverallow rules for accessing such capabilities that work 
> in a similar way to the ones for accessing memory_device_t, security_t, and 
> shadow_t?

Looks like one in a long line of bugs related to
kernel.unprivileged_userns_clone

If blocking that access would mitigate without breaking functionality
then I would be sympathetic but if for example we remove it from
podman_user_t then thats bound to break. Fix is also in the pipeline and
I doubt a policy update would arrive quicker to many than Linux 7.2

I would instead suggest using the JFrog mitigation advice and if when
individuals have access to recent SELinux then they can customise and
tailor it easily:

echo '(deny podman_user_t self (cap_userns (net_admin)))' >mytest.cil &&
sudo semodule -i mytest.cil

I think quite a few people pay quite close attention to that
kernel.unprivileged_userns_clone sysctl setting and are well aware of
the dangers of enabling and using it.

SELinux can do a lot of handy things but in the end, at least to me,
its access control used to enforce the principle of least privilege,
confidentiality or separation.


>
> Below are the domains that have such access in the Debian policy (a moderately 
> modified version of refpolicy) with the unconfined module removed.
>
> # sesearch -A -c cap_userns -p net_admin
> allow container_engine_t container_engine_t: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_nice sys_pacct sys_ptrace 
> sys_rawio sys_resource sys_time sys_tty_config };
> allow container_init_t container_init_t:cap_userns { chown dac_override 
> dac_read_search fowner kill net_admin net_bind_service net_raw setgid setuid 
> };
> allow container_kvm_t container_kvm_t:cap_userns { chown dac_override 
> dac_read_search fowner kill net_admin net_bind_service net_raw setgid setuid 
> };
> allow container_t container_t:cap_userns { chown dac_override dac_read_search 
> fowner kill net_admin net_bind_service net_raw setgid setuid };
> allow crio_t crio_t: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_nice sys_pacct sys_ptrace sys_rawio 
> sys_resource sys_time sys_tty_config };
> allow dockerd_t dockerd_t: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_nice sys_pacct sys_ptrace sys_rawio 
> sys_resource sys_time sys_tty_config };
> allow dockerd_user_t dockerd_user_t: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_nice sys_pacct sys_ptrace 
> sys_rawio sys_resource sys_time sys_tty_config };
> allow init_t init_t: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 iptables_t iptables_t:cap_userns { net_admin net_raw };
> allow podman_t podman_t: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_nice sys_pacct sys_ptrace sys_rawio 
> sys_resource sys_time sys_tty_config };
> allow podman_user_t podman_user_t: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_nice sys_pacct sys_ptrace sys_rawio 
> sys_resource sys_time sys_tty_config };
> allow spc_t spc_t:cap_userns { audit_write chown dac_override dac_read_search 
> fowner fsetid ipc_lock kill mknod net_admin net_bind_service net_raw setgid 
> setpcap setuid sys_admin sys_chroot sys_nice sys_ptrace sys_rawio sys_resource 
> };
> allow spc_user_t spc_user_t:cap_userns { chown dac_override dac_read_search 
> fowner kill net_admin net_bind_service net_raw setgid setuid };
> allow staff_bubblewrap_t staff_bubblewrap_t:cap_userns { dac_override 
> net_admin setpcap sys_admin sys_ptrace };
> allow sysadm_bubblewrap_t sysadm_bubblewrap_t:cap_userns { dac_override 
> net_admin setpcap sys_admin sys_ptrace };
> allow user_bubblewrap_t user_bubblewrap_t:cap_userns { dac_override net_admin 
> setpcap sys_admin sys_ptrace };

-- 
gpg --auto-key-locate clear,nodefault,wkd --locate-external-keys [email protected]
Key fingerprint = FCD2 3660 5D6B 9D27 7FC6  E0FF DA7E 521F 10F6 4098
Dominick Grift
Mastodon: @[email protected]