Skip to content

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

Low
cyphar published GHSA-m8cg-xc2p-r3fc Mar 29, 2023

Package

runc

Affected versions

< 1.1.5

Patched versions

1.1.5

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

Severity

Low
2.5
/ 10

CVSS base metrics

Attack vector
Local
Attack complexity
High
Privileges required
High
User interaction
None
Scope
Changed
Confidentiality
None
Integrity
None
Availability
Low
CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:C/C:N/I:N/A:L

CVE ID

CVE-2023-25809

Weaknesses

No CWEs

Credits