Package: containerd
Version: 2.1.9+ds1-1
Severity: normal

Dear team,

this bug tracks moving containerd in unstable from the 2.1.x series to
2.2.x. The short version: upstream has ended support for the 2.1 branch,
and the only way out of the current security situation is to move to
2.2.

WHY NOW
=======
CVE-2026-46680 (#1141499, GHSA-fqw6-gf59-qr4w) is the immediate reason.
It lets a crafted image get around the Kubernetes runAsNonRoot guard by
abusing the numeric User field. Upstream is explicit that the 2.1 branch
is EOL and will not get a fix; the corrected code landed in 1.7.32,
2.0.9, 2.2.4 and 2.3.1. Since unstable already moved past the 1.7 line
and now ships 2.1.9+ds1-1, the realistic path forward is 2.2.x. The
longer we stay on 2.1.x, the longer we carry a publicly known, unfixable
container runtime vulnerability. Even absent this CVE, 2.1 is now
shelved upstream, so it is a dead end for future security support.

RISK
====
containerd backs docker.io, which Depends on containerd (>= 1.4~) and
has substantial popcon. A 2.1 -> 2.2 move is a runtime transition, so I
want to validate it against:
  * docker.io integration
  * the Kubernetes CRI plugin (k8s / nerdctl users)
  * the v2 shim API, which changed between the two series

DEPENDENCIES
============
I compared the go.mod files of the current 2.1.9 and the target 2.2.5.
The following Debian packages look like they may need a version bump.
I want to stress that these were identified by diffing the two go.mod
files; whether each one is strictly required is something to confirm
during the actual build. They are all worth updating regardless, since
they track upstream releases:

  golang-github-containerd-cgroups           3.0.5   -> 3.1.2
  golang-github-containerd-nri               0.8.0   -> 0.11.0
  golang-github-kubernetes-cri-api           0.32.3  -> 0.34.1
  golang-k8s-apimachinery                    0.33.4  -> 0.34.1
  golang-k8s-client-go                       0.33.4  -> 0.34.1
  golang-k8s-api (indirect)                  0.33.4  -> 0.34.1
  golang-k8s-apiserver (indirect)            0.33.4  -> 0.34.1
  golang-github-checkpoint-restore-checkpointctl  1.3.0  -> 1.4.0
  golang-github-intel-goresctrl             0.3.0   -> 0.10.0
  golang-github-opencontainers-specs        1.2.1   -> 1.3.0
  golang-github-urfave-cli-v2               2.25.7  -> 2.27.7
  golang-golang-x-sys                       0.45.0  -> 0.46.0
  golang-golang-x-sync                      0.20.0  -> 0.21.0
  golang-tags.cncf-container-device-interface  1.0.1  -> 1.1.0

Related bugs I'm aware of that already ask for some of these updates:

  * #1122216 - golang-github-opencontainers-specs: Upload version 1.3.0
    to unstable. 1.3.0-1 is in experimental already; getting it to
    unstable unblocks this row (and vice versa).
  * #1115790 - golang-github-containerd-cgroups FTBFS (minor). Bumping to
    3.1.2 presumably supersedes it.
  * #1104389 - golang-k8s-apimachinery flaky FTBFS. The 0.34.1 bump
    likely addresses it.
  * #1140131 - golang-k8s-client-go flaky FTBFS. Likewise, likely
    addressed by the 0.34.1 bump.

Two pleasant surprises from the go.mod diff: k8s.io/kubelet is dropped
in 2.2.5, so golang-github-kubernetes-kubelet-dev can come out of
Build-Depends; and containerd/api v1.10.0 is packaged from this very
source (golang-github-containerd-containerd-api-dev), so it follows the
bump automatically. Most remaining go.mod requirements are already
satisfied in unstable (grpc 1.81.1, protobuf 1.36.10, go-jose 4.1.4,
ttrpc 1.2.7, image-spec 1.1.1, cni 1.3.0, plugins 1.9.1,
klauspost-compress 1.19.0, ...).

PLAN
====
1. Push the runtime-spec 1.3.0 series from experimental to unstable
   (#1122216), since it appears to be the linchpin for several of the
   listed packages.
2. Work through the bumps above, treating the k8s.io/* move to 0.34.1 as
   one coordinated change.
3. Update containerd to 2.2.x (2.2.5 or later), rebase the Debian delta,
   drop the kubelet build-dep.
4. Verify docker.io and CRI integration via autopkgtests, confirm the v2
   shim transition, then aim for migration to testing.

This bug tracks the 2.1 -> 2.2 upgrade; it Blocks #1141499
(CVE-2026-46680).

-- System Information:
Debian Release: forky/sid
  APT prefers testing
  APT policy: (500, 'testing'), (50, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 7.1.3+deb14-amd64 (SMP w/8 CPU threads; PREEMPT)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charset=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Reply via email to