Bug 2486779 (CVE-2026-10517)

Summary: CVE-2026-10517 clair: clair: unauthenticated SSRF via manifest layer URI enables internal network reconnaissance
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security <prodsec-ir-bot>
Status: NEW --- QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: bdettelb, doconnor
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
A flaw was found in Clair. The fetcher component makes outbound HTTP requests to attacker-supplied URIs from manifest layer descriptors without IP or scheme filtering. When PSK authentication is not configured (opt-in, not enforced by default), an unauthenticated attacker can submit a manifest with a URI pointing to internal services or cloud metadata endpoints. The SSRF is reflective for non-200 responses, leaking up to 256 bytes of error body content via CheckResponse error messages. Operator-managed Red Hat Quay deployments auto-configure PSK and are not exposed to the unauthenticated attack vector.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description OSIDB Bzimport 2026-06-09 08:57:09 UTC
The Clair vulnerability scanner's fetcher (libindex/fetcher.go:195-213) makes outbound HTTP GET requests to URIs specified in manifest layer descriptors without IP or scheme filtering. Authentication via PSK is opt-in (server.go:105) — if no PSK is configured, the indexer API is fully unauthenticated. An attacker can POST to /indexer/api/v1/index_report with a manifest containing a URI pointing to internal services or cloud metadata endpoints (e.g. 169.254.169.254). While digest validation prevents full response body exfiltration, the CheckResponse function in internal/httputil/responsechecker.go reflects the first 256 bytes of non-200 response bodies in error messages, making the SSRF reflective rather than blind. Content-Type headers and post-redirect URLs are also reflected. For operator-managed Quay deployments, the operator auto-generates a PSK (pkg/kustomize/secrets.go:42-50, 441-445), so PSK auth is enforced by default and the unauthenticated vector is blocked. Standalone Clair deployments without PSK configuration are fully exposed.