Summary
containerd's CRI checkpoint import process fails to validate the image references specified within a checkpoint image's configuration. An attacker with permissions to create pods can use a crafted checkpoint image to force containerd to pull a malicious image and assign it an arbitrary local tag, thereby poisoning the node's local image cache.
Impact
If other pods on the same node subsequently attempt to use the poisoned tag with an IfNotPresent (or Never) pull policy, they will execute the attacker's malicious image instead of the legitimate one. This can lead to a compromise of the affected pods, allowing the attacker to execute arbitrary code under the victim pod's identity. The attack requires permissions to create pods and the ability to supply a crafted checkpoint image, but once the local image cache is poisoned the impact extends to any workload on that node referencing the targeted tag.
Detection
Review audit logs for unexpected pod checkpoint restore operations and cross-reference the image references in checkpoint archives against the cluster's allowed image registries. Nodes running containerd v2.1.0–v2.1.8, v2.2.0–v2.2.4, or v2.3.0–v2.3.1 are in the affected version range. Confirm the running version:
containerd --version
Monitor for image pull events that originate from checkpoint restore paths, particularly where the resulting local tag does not match the expected registry source.
Mitigation
Upgrade to one of the patched containerd releases:
- containerd v2.3.x: upgrade to v2.3.2 or later
- containerd v2.2.x: upgrade to v2.2.5 or later
- containerd v2.1.x: upgrade to v2.1.9 or later
As a workaround, restrict pod creation to trusted users and allow only trusted images to be pulled. Limiting access to checkpoint/restore operations reduces the attack surface on clusters that cannot upgrade immediately.
Related Security Guidance
References
- GHSA-cvxm-645q-p574 — GitHub Security Advisory
- NVD CVE-2026-50195 — National Vulnerability Database