Safeguard
Vulnerability Analysis•

CVE-2026-50195: Critical Image Poisoning in containerd

CVE-2026-50195 is a critical flaw in containerd CRI checkpoint import that lets image tags be poisoned. Upgrade to 2.3.2, 2.2.5 or 2.1.9 and check pull policies.

Safeguard Security Team
3 min read

CVE-2026-50195 is a critical (CVSS 9.9) flaw in containerd. CRI checkpoint import does not validate image references, so a user who can create pods can poison a node's local image cache. Upgrade to containerd 2.3.2, 2.2.5 or 2.1.9, and review pull policies and who can create pods.

What's affected

  • Product: containerd, the container runtime, version 2 lines (Go module github.com/containerd/containerd/v2).
  • Affected: 2.1.0 to before 2.1.9, 2.2.0 to before 2.2.5, and 2.3.0 to before 2.3.2.
  • Fixed: 2.1.9, 2.2.5 and 2.3.2.
  • Weaknesses: CWE-345, insufficient verification of data authenticity, and CWE-829, inclusion of functionality from an untrusted control sphere.
  • CVSS 9.9 (critical), vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H. The vector shows low privileges are needed.
  • Published 1 July 2026. Not marked as exploited in CISA KEV.

The attacker needs permission to create pods, so the exposure is highest in shared clusters.

How to check if you're exposed

Check the runtime version on every node.

containerd --version
kubectl get nodes -o wide

The CONTAINER-RUNTIME column of the second command shows the runtime and version per node. Managed Kubernetes services update node images on their own schedule, so read your provider's bulletin for the CVE.

Then check two settings. Who can create pods in each namespace? Do your workloads use imagePullPolicy: IfNotPresent or Never? The advisory says those policies are the ones that trust whatever tag is already on the node.

What to do now

  1. Upgrade containerd to 2.3.2, 2.2.5 or 2.1.9, or move to a node image from your provider that includes the fix.
  2. Restrict who may create pods, and in shared clusters use admission policies that limit images to approved registries.
  3. Where it fits your release process, reference images by digest rather than by mutable tag, so a poisoned tag cannot stand in for the real one.
  4. Consider the Always pull policy for sensitive workloads, since the advisory ties the risk to IfNotPresent and Never.
  5. Drain and replace nodes you suspect of running unexpected images, and compare running image digests with the digests you deployed.

Why it matters

Container tags are names, not guarantees. A node keeps a local cache of images and will reuse a tag it already has when the pull policy allows it. The advisory says the checkpoint import process did not check the image references inside a checkpoint's configuration, so a crafted checkpoint could pull an attacker's image and assign it a chosen local tag. Later pods that asked for that tag would run the attacker's image under their own identity.

Two classes apply, CWE-345 and CWE-829. The defence in depth is the same one supply chain teams already use: pin by digest, restrict registries, and limit who can start workloads.

Safeguard has a free in-browser dependency scan at gold.safeguard.sh/scan that matches the packages in a manifest against known CVEs. The Gold directory also lists container related CVEs, and container image scanning can check what is inside images you run.

Try it yourself

Click through it at your own pace, or open it full screen.

Quick check

Does this affect clusters where nobody uses checkpointing?

The advisory describes the CRI checkpoint import path. Upgrade anyway, since the fix is in a supported patch release for each line.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.