Skip to content

bump containerd to v2.2.4 (CVE-2026-46680)#4217

Open
eriknordmark wants to merge 1 commit into
linuxkit:masterfrom
eriknordmark:fix-cve-2026-46680
Open

bump containerd to v2.2.4 (CVE-2026-46680)#4217
eriknordmark wants to merge 1 commit into
linuxkit:masterfrom
eriknordmark:fix-cve-2026-46680

Conversation

@eriknordmark
Copy link
Copy Markdown
Contributor

- What I did

Bumped containerd from v2.2.0 to v2.2.4 in tools/containerd-dev/Dockerfile. This fixes CVE-2026-46680: an image whose User directive is a numeric string outside int32 range (e.g. "9999999999") is treated as a username and resolved against the image's /etc/passwd. A crafted /etc/passwd mapping the same string to UID 0 then makes the container run as root, defeating Kubernetes runAsNonRoot. Fixed on the 2.2 line in v2.2.4.

- How I did it

  1. tools/containerd-dev/Dockerfile: CONTAINERD_COMMIT=v2.2.0v2.2.4.
  2. Updated the FROM linuxkit/containerd-dev:<hash> line in pkg/containerd/Dockerfile, pkg/init/Dockerfile, and test/pkg/containerd/Dockerfile (the three consumers called out by the comment in tools/containerd-dev/Dockerfile).
  3. Swept every example/test/project YAML that pins the resulting linuxkit/containerd:<hash>, linuxkit/init:<hash>, and linuxkit/test-containerd:<hash> tree hashes to the new values.

Mirrors the scope of the v2.2.0 bump (2dd12173, 2025-11-18).

- How to verify it

make -C pkg build will fail on this PR until the new linuxkit/containerd-dev:405449f30ba384a0f67ad1b75f78a501604f2e44 image is published to Docker Hub. I don't have push access to the linuxkit/ org, so a maintainer needs to build & push that image (and the dependent linuxkit/containerd, linuxkit/init, linuxkit/test-containerd tags) before CI can resolve the FROMs. Once the dev image is on Hub, CI should run cleanly.

- Description for the changelog

Update containerd to v2.2.4 (fixes CVE-2026-46680).

containerd v2.2.0 (currently pinned in tools/containerd-dev) is
vulnerable to CVE-2026-46680: when an image's User directive is a
numeric string outside int32 range, containerd treats it as a username
and resolves it against the image's /etc/passwd, letting a crafted
image escape Kubernetes runAsNonRoot enforcement. Fixed on the 2.2 line
in v2.2.4.

The bump cascades through the FROM in pkg/containerd, pkg/init and
test/pkg/containerd (all of which build off linuxkit/containerd-dev)
and the example/test/project YAMLs that pin the resulting tree hashes.

CI on this PR will fail until a maintainer pushes the rebuilt
linuxkit/containerd-dev image; I don't have push access to the
linuxkit/ Docker Hub org.

Signed-off-by: eriknordmark <erik@zededa.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant