VDB
Sign up
HIGH7.8

GHSA-fqw6-gf59-qr4w

containerd user ID handling bypass allows runAsNonRoot evasion

Quick fix

GHSA-fqw6-gf59-qr4w — github.com/containerd/containerd: upgrade to the fixed version with the command below.

go get github.com/containerd/containerd@v1.7.32

Details

### Impact A bug was found in containerd where containers launched with a numeric `User` directive that cannot be parsed as a 32-bit integer are incorrectly treated as a username. If a crafted image provides an `/etc/passwd` file mapping this large numeric string to root, the container ultimately runs as root (UID 0). This allows the Kubernetes `runAsNonRoot` restriction to be bypassed, causing unexpected behavior for environments that require containers to run as a non-root user.

### Patches This bug has been fixed in the following containerd versions:

* 2.3.1 * 2.2.4 * 2.0.9 * 1.7.32

Note: The containerd 2.1 release has reached its [end of life](https://containerd.io/releases/#current-state-of-containerd-releases) and a fixed version is not provided.

Users should update to these versions to resolve the issue.

### Workarounds Ensure that only trusted images are used and that only trusted users have permissions to import images. Alternatively, enforcing a specific numeric `runAsUser` in the Kubernetes Pod `securityContext` overrides the `USER` directive in the image and prevents the bypass. Newer versions of Kubernetes, starting with 1.34, also appear to enforce `runAsNonRoot` properly regardless of this bug.

### Credits The containerd project would like to thank Lei Wang (@ssst0n3) for responsibly disclosing this issue in accordance with the [containerd security policy](https://github.com/containerd/project/blob/main/SECURITY.md).

### Resources * https://github.com/advisories/GHSA-265r-hfxg-fhmg (CVE-2024-40635)

### For more information

If there are any questions or comments about this advisory:

* Open an issue in [containerd](https://github.com/containerd/containerd/issues/new/choose) * Send an email to [security@containerd.io](mailto:security@containerd.io)

To report a security issue in containerd: * [Report a new vulnerability](https://github.com/containerd/containerd/security/advisories/new) * Send an email to [security@containerd.io](mailto:security@containerd.io)

Are you affected?

Enter the version of the package you're using.

Affected packages

Go/github.com/containerd/containerd
Introduced in: 1.7.27Fixed in: 1.7.32
Fixgo get github.com/containerd/containerd@v1.7.32
Go/github.com/containerd/containerd/v2
Introduced in: 2.0.4Fixed in: 2.0.9
Fixgo get github.com/containerd/containerd/v2@v2.0.9
Go/github.com/containerd/containerd/v2
Introduced in: 2.1.0-beta.0Fixed in: 2.2.4
Fixgo get github.com/containerd/containerd/v2@v2.2.4
Go/github.com/containerd/containerd/v2
Introduced in: 2.3.0-beta.0Fixed in: 2.3.1
Fixgo get github.com/containerd/containerd/v2@v2.3.1

References