{"id":"CVE-2026-77776","summary":"Headroom Proxy Treats the Client-Supplied x-headroom-user-id Header as an Authenticated Identity","details":"Headroom's LLM proxy derives the memory owner from the x-headroom-user-id request header. The header is read directly at several points in headroom/proxy/handlers/openai.py, including the chat completion and websocket paths, and nothing binds the value to the caller. A client can therefore name another user's identifier and read or write that user's stored LLM memory. The fix introduces a single resolve_memory_identity seam in headroom/proxy/identity.py that honors the header only for loopback or allowlisted callers and otherwise binds the identity to the proxy-token fingerprint or the operating system user. 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.","modified":"2026-09-11T03:30:45.633198688Z","published":"2026-08-21T11:22:51.779Z","database_specific":{"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/77xxx/CVE-2026-77776.json","cna_assigner":"VulnCheck","cwe_ids":["CWE-639"]},"references":[{"type":"WEB","url":"https://pypi.org"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/77xxx/CVE-2026-77776.json"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-77776"},{"type":"ADVISORY","url":"https://www.vulncheck.com/advisories/headroom-proxy-treats-the-client-supplied-x-headroom-user-id-header-as-an-authenticated-identity"},{"type":"REPORT","url":"https://github.com/headroomlabs-ai/headroom/pull/2207"},{"type":"PACKAGE","url":"https://github.com/headroomlabs-ai/headroom"},{"type":"ARTICLE","url":"https://github.com/headroomlabs-ai/headroom/blob/v0.29.0/headroom/proxy/handlers/openai.py"},{"type":"ARTICLE","url":"https://github.com/headroomlabs-ai/headroom/blob/v0.36.1/headroom/proxy/identity.py"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/headroomlabs-ai/headroom","events":[{"introduced":"0"},{"fixed":"37faf2f24724370483b1819b0921c899791bedc7"}],"database_specific":{"source":"AFFECTED_FIELD","extracted_events":[{"introduced":"0"},{"fixed":"0.36.1"}]}}],"versions":["v0.36.0","v0.35.0","v0.34.0","v0.33.0","v0.32.0","v0.31.0","v0.30.0","v0.29.0","v0.28.0","v0.27.0","v0.26.0","v0.25.0","v0.24.0","v0.23.0","v0.22.3","v0.22.2","v0.22.1","v0.22.0","v0.21.38","v0.21.37","v0.21.36","v0.21.35","v0.21.33","v0.21.34","v0.21.32","v0.21.31","v0.21.30","v0.21.29","v0.21.28","v0.21.27","v0.21.26","v0.21.25","v0.21.22","v0.21.24","v0.21.20","v0.21.23","v0.21.21","v0.21.17","v0.21.19","v0.21.18","v0.21.16","v0.21.15","v0.21.14","v0.21.13","v0.21.12","v0.21.11","v0.21.10","v0.21.9","v0.21.8","v0.21.7","v0.21.6","v0.21.5","v0.21.4","v0.21.3","v0.21.2","v0.21.1","v0.21.0","v0.20.27","v0.20.26","v0.20.25","v0.20.24","v0.20.23","v0.20.22","v0.20.21","v0.20.20","v0.20.19","v0.20.18","v0.20.17","v0.20.16","v0.20.15","v0.20.14","v0.20.13","v0.20.12","v0.20.11","v0.20.10","v0.20.9","v0.20.8","v0.20.7","v0.20.6","v0.20.5","v0.20.4","v0.20.3","v0.20.2","v0.20.1","v0.20.0","v0.19.0","v0.18.2","v0.18.0","v0.18.1","v0.17.0","v0.16.0","v0.15.1","v0.15.0","v0.14.5","v0.14.4","v0.14.3","v0.14.2","v0.10.17","v0.14.1","v0.13.5","v0.14.0","v0.13.8","v0.13.7","v0.13.6","v0.13.4","v0.13.3","v0.13.2","v0.13.1","v0.13.0","v0.12.0","v0.11.0","v0.10.19","v0.10.18","v0.10.16","v0.10.15","v0.10.14","v0.10.13","v0.10.12","v0.10.11","v0.10.10","v0.10.9","v0.10.3","v0.10.8","v0.9.7","v0.10.7","v0.10.6","v0.10.5","v0.10.4","v0.10.2","v0.10.1","v0.10.0","v0.9.6","v0.9.5","v0.9.4","v0.9.3","v0.9.2","v0.8.3","v0.9.1","v0.9.0","v0.8.2","v0.8.1","v0.8.0","v0.7.1","v0.7.4","v0.7.3","v0.7.2","v0.7.0","v0.6.7","v0.6.6","v0.6.5","v0.6.4","v0.6.3","v0.6.2","v0.6.1","v0.6.0","v0.5.28","v0.5.27","v0.5.26","v0.5.20","v0.5.2","v0.3.7","v0.3.0","v0.2.15"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-77776.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N"}]}