GHSA-5j5w-g665-5m35 Ambiguous OCI manifest parsing
Ambiguous OCI manifest parsing allows attackers to bypass digest verification, potentially leading to code execution or security bypass in containerd.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is GHSA-5j5w-g665-5m35?
GHSA-5j5w-g665-5m35 is an unsafe deserialization vulnerability in github.com/containerd/containerd, published on 18 Nov 2021. An attacker can exploit it over the internet without logging in, with no action from the victim.
Official description
Impact
In the OCI Distribution Specification version 1.0.0 and prior and in the OCI Image Specification version 1.0.1 and prior, manifest and index documents are ambiguous without an accompanying Content-Type HTTP header. Versions of containerd prior to 1.4.12 and 1.5.8 treat the Content-Type header as trusted and deserialize the document according to that header. If the Content-Type header changed between pulls of the same ambiguous document (with the same digest), the document may be interpreted differently, meaning that the digest alone is insufficient to unambiguously identify the content of the image.
Patches
This issue has been fixed in containerd 1.4.12 and 1.5.8. Image pulls for manifests that contain a “manifests” field or indices which contain a “layers” field are rejected.
Workarounds
Ensure you only pull images from trusted sources.
References
https://github.com/opencontainers/distribution-spec/security/advisories/GHSA-mc8v-mgrf-8f4m https://github.com/opencontainers/image-spec/security/advisories/GHSA-77vh-xpmg-72qh
For more information
If you have any questions or comments about this advisory:
- Open an issue in containerd
- Email us at [email protected]
Which versions are affected by GHSA-5j5w-g665-5m35?
5 open source packages ship an affected version, including github.com/containerd/containerd.
| Package | Affected | Fixed in |
|---|---|---|
github.com/containerd/containerd Go | All versions | 1.4.12, 1.5.8 |
github.com/containerd/containerd Go | All versions | 1.4.12 |
github.com/containerd/containerd Go | All versions | 1.4.12 |
github.com/containerd/containerd Go | From 1.5.0 | 1.5.8 |
github.com/containerd/containerd Go | From 1.5.0 | 1.5.8 |
How do I fix GHSA-5j5w-g665-5m35?
Upgrade github.com/containerd/containerd to a fixed version for your release line: 1.4.12 or 1.5.8.
Upgrade, and only deserialise data from trusted sources or with an allow-list of types. More about Unsafe deserialization.
Is GHSA-5j5w-g665-5m35 being exploited?
There is no known exploitation of GHSA-5j5w-g665-5m35 in the wild and no public exploit code.
Sources
Also known as GO-2022-0360.