Sceawere
Vulnerability Detail
CVE-2026-77775UPDATED Verified Sceawere Triage Sources: NVD / CISA KEV
Headroom LLM Proxy SSRF Vulnerability
Vulnerability Metadata
- Severity
- High
- Score / CVSS
- 8.6
- Creation Date
- 4h ago
- Vendor
- Headroom Labs
- Product
- Headroom
- Attack Type
- Server-Side Request Forgery (SSRF)
- Vector String
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
- Attack Complexity
- LOW
Narrative and Response
Description
Headroom's LLM proxy lets a client choose the upstream destination with the x-headroom-base-url request header. _resolve_openai_upstream_base in headroom/proxy/handlers/openai.py accepts the header value, requires only that it parse with an http or https scheme and a hostname, and returns it for use as the upstream base; _select_passthrough_base_url in headroom/providers/proxy_routes.py reads the same header for the passthrough routes. No check rejects loopback, link-local, or RFC 1918 destinations, and because the component is a proxy the upstream response is returned to the caller, so the request reaches internal services and cloud metadata addresses and their responses are disclosed. The Authorization header accompanying the request is forwarded unchanged to the caller-designated host. The pip console script binds 127.0.0.1 by default, but the reference docker-compose.yml ships --host 0.0.0.0 with published ports and no required HEADROOM_PROXY_TOKEN, which the server itself warns about at startup, so a deployment following the shipped compose exposes the affected data-plane routes to the network without authentication.
Executive Summary
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Technical Details
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Mitigations
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
References
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Additional Metadata
{
"score": "8.6",
"pubDate": "2026-08-21T12:16:36.813Z",
"pubdate": "2026-08-21T12:16:36.813Z",
"executiveSummary": "A Server-Side Request Forgery (SSRF) vulnerability exists in Headroom's LLM proxy, affecting proxy routes and upstream resolution mechanisms.\nThe vulnerability allows an unauthenticated remote attacker to force the proxy to send HTTP requests to arbitrary destinations, including loopback interfaces, link-local addresses, RFC 1918 private networks, and cloud metadata services.\nThe root cause is the lack of validation on the x-headroom-base-url request header, which dictates the upstream destination without restricting internal or sensitive IP ranges.\nBecause the proxy forwards the client's Authorization header unchanged to the caller-designated host and returns the upstream response, attackers can exfiltrate internal data and abuse local credentials.\nThe risk is significantly elevated when deployed using the reference docker-compose.yml configuration with --host 0.0.0.0 and published ports without a required HEADROOM_PROXY_TOKEN, exposing data-plane routes to the network without authentication.\nSuccessful exploitation requires network access to the exposed proxy instance and the ability to craft HTTP requests containing malicious x-headroom-base-url header values.",
"technicalDetails": "The vulnerability resides in the request handling logic of Headroom's LLM proxy, specifically within _resolve_openai_upstream_base located in headroom/proxy/handlers/openai.py and _select_passthrough_base_url located in headroom/providers/proxy_routes.py.\nThese functions read the x-headroom-base-url request header provided by the client, enforcing only that the supplied value parses successfully with an http or https scheme and contains a valid hostname before returning it as the upstream base URL.\nNo validation checks are performed to reject loopback addresses (such as 127.0.0.1 or [::1]), link-local addresses, or RFC 1918 private network spaces.\nWhen a client makes a request through the proxy, the component forwards the request to the attacker-controlled upstream destination specified in the x-headroom-base-url header.\nAdditionally, any Authorization header accompanying the original client request is forwarded unchanged to the designated host, enabling credential relaying and unauthorized access to internal services.\nBecause the proxy returns the upstream response directly to the caller, attackers can successfully query internal services, internal APIs, and cloud metadata endpoints, resulting in the disclosure of sensitive data.\nNetwork exposure is exacerbated by the reference docker-compose.yml configuration, which ships with the server bound to 0.0.0.0 via --host 0.0.0.0 with published ports and omits the requirement for a HEADROOM_PROXY_TOKEN.\nConsequently, deployments utilizing this reference configuration expose affected data-plane routes to the wider network without requiring authentication, allowing unauthenticated remote attackers to trigger the SSRF attack flow."
}