{"id":"EUVD-2026-99225","enisaUuid":"b925722e-a57e-3854-b505-7101139644f1","description":"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.","datePublished":"Oct 13, 2026, 6:20:56 PM","dateUpdated":"Oct 18, 2026, 1:38:36 PM","baseScore":6.8,"baseScoreVersion":"3.1","baseScoreVector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:H/A:N","references":"https://github.com/distribution/distribution/security/advisories/GHSA-685w-q87j-wqw3\nhttps://github.com/distribution/distribution/commit/960439b09f342cdeb8f1c0e18e8c7349bdcfbf80\nhttps://github.com/distribution/distribution/releases/tag/v3.1.2\n","aliases":"CVE-2026-85747\nGHSA-685w-q87j-wqw3\n","assigner":"GitHub_M","epss":0.22,"enisaIdProduct":[{"id":"0d4b98b7-1f94-383f-8e37-7431158c7b5f","product":{"name":"distribution","vendor":{"name":"distribution"}},"product_version":"\u003c 3.1.2"}],"enisaIdVendor":[{"id":"e189592e-822b-3942-8e1c-709e98376325","vendor":{"name":"distribution"}}],"enisaIdVulnerability":[{"id":"a6bcc503-c6ae-3a5a-8652-5aa3dd8236e7","vulnerability":{"id":"GHSA-685w-q87j-wqw3","description":"Distribution: Client `manifests.Get()` does not verify returned content against requested digest","datePublished":"Oct 15, 2026, 8:22:02 PM","dateUpdated":"Oct 15, 2026, 8:22:02 PM","baseScore":0.0,"references":"https://github.com/distribution/distribution/security/advisories/GHSA-685w-q87j-wqw3\nhttps://nvd.nist.gov/vuln/detail/CVE-2026-85747\nhttps://github.com/distribution/distribution/commit/8f91c26c8888a95a36c2357a6e30bc15d4dd76d3\nhttps://github.com/distribution/distribution/commit/960439b09f342cdeb8f1c0e18e8c7349bdcfbf80\nhttps://github.com/distribution/distribution\nhttps://github.com/distribution/distribution/releases/tag/v3.1.2\n","enisa_id":"EUVD-2026-99225\n","aliases":"GHSA-685w-q87j-wqw3\nCVE-2026-85747\n","epss":0.0,"dataProcessed":"Nov 1, 2026, 2:07:48 AM","vulnerabilityProduct":[],"vulnerabilityVendor":[]}},{"id":"f58f7ab0-7490-3698-9285-ea707464afa4","vulnerability":{"id":"CVE-2026-85747","description":"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.","datePublished":"Oct 13, 2026, 6:20:56 PM","dateUpdated":"Oct 18, 2026, 1:38:36 PM","status":"PUBLISHED","baseScore":6.8,"baseScoreVersion":"3.1","baseScoreVector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:H/A:N","references":"https://github.com/distribution/distribution/security/advisories/GHSA-685w-q87j-wqw3\nhttps://github.com/distribution/distribution/commit/960439b09f342cdeb8f1c0e18e8c7349bdcfbf80\nhttps://github.com/distribution/distribution/releases/tag/v3.1.2\n","enisa_id":"EUVD-2026-99225\n","assigner":"GitHub_M","epss":0.22,"dataProcessed":"Nov 7, 2026, 7:17:34 AM","vulnerabilityProduct":[{"id":"600c62d5-f3d8-3dd1-993b-c15209b51a12","product":{"name":"distribution","vendor":{"name":"distribution"}},"product_version":"\u003c 3.1.2"}],"vulnerabilityVendor":[{"id":"d21fef4d-e5d7-3f2a-8c1c-3f69b8781487","vendor":{"name":"distribution"}}]}}],"enisaIdAdvisory":[]}