opencontainers/runc · Security
rootless: `/sys/fs/cgroup` is writable when cgroupns isn't unshared in runc
- GHSA ID
- GHSA-m8cg-xc2p-r3fc
- CVE ID
- CVE-2023-25809
- Severity
- low
- Published
- Updated
- CVSS
- 2.5 · CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:C/C:N/I:N/A:L
- CVSS v3
- 2.5 · CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:C/C:N/I:N/A:L
Description
Impact
It was found that rootless runc makes /sys/fs/cgroup writable in following conditons:
- when runc is executed inside the user namespace, and the
config.jsondoes not specify the cgroup namespace to be unshared (e.g..,(docker|podman|nerdctl) run --cgroupns=host, with Rootless Docker/Podman/nerdctl) - or, when runc is executed outside the user namespace, and
/sysis mounted withrbind, ro(e.g.,runc spec --rootless; this condition is very rare)
A container may gain the write access to user-owned cgroup hierarchy /sys/fs/cgroup/user.slice/... on the host .
Other users's cgroup hierarchies are not affected.
Patches
v1.1.5 (planned)
Workarounds
- Condition 1: Unshare the cgroup namespace (
(docker|podman|nerdctl) run --cgroupns=private). This is the default behavior of Docker/Podman/nerdctl on cgroup v2 hosts. - Condition 2 (very rare): add
/sys/fs/cgrouptomaskedPaths
CWEs
- CWE-281 · Improper Preservation of Permissions