GHSA-m8cg-xc2p-r3fc

rootless: `/sys/fs/cgroup` is writable when cgroupns isn't unshared in runc

At a glance

Published
Updated
CVE
CVE-2023-25809
Aliases
GO-2023-1682
CVSS_V3
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: 1. when runc is executed inside the user namespace, and the `config.json` does not specify the cgroup namespace to be unshared (e.g.., `(docker|podman|nerdctl) run --cgroupns=host`, with Rootless Docker/Podman/nerdctl) 2. or, when runc is executed outside the user namespace, and `/sys` is mounted with `rbind, 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/cgroup` to `maskedPaths`

Affected packages

PackageVersions
Go · github.com/opencontainers/runcintroduced 0, fixed 1.1.5

References

Sources

SourceLicence
OSV.devCC-BY 4.0 — GitHub Advisory Database