CVE-2026-85747: Distribution: Client `manifests.Get()` does not verify returned content against requested digest
registry/client.(*manifests).Get(ctx, dgst, …) fetches a manifest by digest but never hashes the returned body and compares it against the requested digest. A malicious or compromised registry, or any MITM on the registry connection, can serve arbitrary manifest bytes in response to a digest-pinned request and the client returns the substituted content transparently to the caller. Any application relying on digest pinning for supply-chain integrity — image policy controllers, mirrors, pull-through caches — is silently undermined. The bundled pull-through proxy (registry/proxy/proxymanifeststore.go) is itself an unguarded consumer and is directly exploitable.
References
- github.com/advisories/GHSA-685w-q87j-wqw3
- github.com/distribution/distribution/commit/8f91c26c8888a95a36c2357a6e30bc15d4dd76d3
- github.com/distribution/distribution/commit/960439b09f342cdeb8f1c0e18e8c7349bdcfbf80
- github.com/distribution/distribution/releases/tag/v3.1.2
- github.com/distribution/distribution/security/advisories/GHSA-685w-q87j-wqw3
- nvd.nist.gov/vuln/detail/CVE-2026-85747
Code Behaviors & Features
Detect and mitigate CVE-2026-85747 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →