{"id":11087,"date":"2026-09-04T18:51:39","date_gmt":"2026-09-04T10:51:39","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-77776"},"modified":"2026-09-04T18:51:39","modified_gmt":"2026-09-04T10:51:39","slug":"cve-2026-77776","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-77776","title":{"rendered":"CVE-2026-77776 [CRITICAL] &#8211; Headroom&#8217;s LLM proxy derives the memory owner from the x-headroom-user-id request header."},"content":{"rendered":"<p>Headroom&#8217;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&#8217;s identifier and read or write that user&#8217;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 &#8211;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.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Headroom&#8217;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 complet<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-11087","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/11087","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11087"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11087"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}