Distribution is a toolkit to pack, ship, store, and deliver container content. Prior to 3.1.2, registry/client.(*manifests).Get() reads a manifest returned for a digest-pinned request and passes it to distribution.UnmarshalManifest without hashing the body against the requested digest, allowing a malicious or intercepted registry response to substitute attacker-chosen manifest content even when Docker-Content-Digest claims the requested value. The bundled pull-through proxy in registry/proxy/proxymanifeststore.go can cache and re-serve the substituted manifest. This issue is fixed in version 3.1.2.
{
"cna_assigner": "GitHub_M",
"cwe_ids": [
"CWE-354"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/85xxx/CVE-2026-85747.json"
}{
"extracted_events": [
{
"introduced": "0"
},
{
"fixed": "3.1.2"
}
],
"source": [
"AFFECTED_FIELD",
"REFERENCES"
]
}