GHSA-pg57-6jwg-q645: Go/github.com/containerd/containerd/v2 vulnerability
Impact
A vulnerability exists in containerd's image pull handlers where a crafted OCI image index containing deeply nested or heavily fanned-out descriptor graphs can cause unbounded CPU and memory consumption. During the PullImage operation, the recursive traversal and processing of child descriptors lack sufficient depth and breadth limits, and fail to adequately deduplicate identical descriptors. This unbounded traversal leads to excessive resource allocation.
Consequently, pulling a malicious image reference can result in prolonged stalls during container creation and significant resource pressure on the host system. This issue occurs entirely during the image pull phase, prior to any container execution.
Patches
This bug has been fixed in containerd 2.4.1, 2.3.6, 2.2.9, 2.0.13, and 1.7.36. Users should update to these versions to resolve the issue.
Workarounds
There are no known workarounds for this issue. Users are advised to only pull trusted images from known registries until the patch can be applied.
Credits
The containerd project would like to thank Jakub Ciolek at ElevenLabs and @jlgore who independently discovered and responsibly disclosed this issue in accordance with the containerd security policy.
For more information
If you have any questions or comments about this advisory:
Open an issue in containerd Email us at security@containerd.io
To report a security issue in containerd: Report a new vulnerability Email us at security@containerd.io
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
go/github.com/containerd/containerd/v2to a version that resolves this vulnerability.Fixed in 2.4.1 - Upgrade
Upgrade
go/github.com/containerd/containerd/v2to a version that resolves this vulnerability.Fixed in 2.3.6 - Upgrade
Upgrade
go/github.com/containerd/containerd/v2to a version that resolves this vulnerability.Fixed in 2.2.9 - Upgrade
Upgrade
go/github.com/containerd/containerdto a version that resolves this vulnerability.Fixed in 1.7.36 - Upgrade
Upgrade
go/github.com/containerd/containerd/v2to a version that resolves this vulnerability.Fixed in 2.0.13 - Upgrade
Upgrade
containerdto a version that resolves this vulnerability.Fixed in 2.4.1 - Upgrade
Upgrade
containerdto a version that resolves this vulnerability.Fixed in 2.3.6 - Upgrade
Upgrade
containerdto a version that resolves this vulnerability.Fixed in 2.2.9 - Upgrade
Upgrade
containerdto a version that resolves this vulnerability.Fixed in 2.0.13 - Upgrade
Upgrade
containerdto a version that resolves this vulnerability.Fixed in 1.7.36 - Compensating control
Only pull trusted images from known registries until the patch can be applied
Event History
Frequently Asked Questions
What must an attacker do to trigger the resource exhaustion?
An attacker needs to cause the affected system to pull a malicious image reference whose OCI image index contains deeply nested or heavily fanned-out descriptor graphs. The issue is triggered during PullImage, before any container is executed.
Which systems are most exposed?
Systems that pull images from untrusted or unknown registries are most exposed, because the malicious content is processed during the image pull phase. A successful pull can cause prolonged container-creation stalls and significant host CPU and memory pressure.
What can be done before an update is available?
There are no known technical workarounds. Until patched, only pull trusted images from known registries.
Which containerd releases contain the fix?
The issue is fixed in containerd 2.4.1, 2.3.6, 2.2.9, 2.0.13, and 1.7.36.