CVE-2026-85747
MediumCVSS 6.8Exploitation Probability (EPSS)
Low risk10th percentile - higher than 10% of all known CVEs
Summary
In the Distribution library (registry/client) prior to 3.1.2, the Get() method reads a manifest returned for a digest-pinned request and passes it to distribution.UnmarshalManifest without hashing the body against the requested digest. This allows a malicious or intercepted registry response to substitute attacker-chosen manifest content even when the Docker-Content-Digest header claims the requested value. The bundled pull-through proxy can additionally cache and re-serve the substituted manifest. The issue is fixed in version 3.1.2.
Risk Assessment
An attacker can deliver a substituted container image, leading to execution of unauthorized code in production environments. This poses a software supply chain integrity risk.
Recommendation
Upgrade the Distribution library to version 3.1.2 or later. Verify whether the bundled pull-through proxy is in use and validate the integrity of pulled images.
Other vulnerabilities in Distribution
Original NVD description (English source)
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.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

