{"id":"CVE-2026-122233","kind":"vulnerability","aliases":["CVE-2026-122233"],"related":[],"title":"FrankenPHP: worker mode leaks earlier requests' HTTP response headers to other users","description":"FrankenPHP before 1.13.4 contains an information disclosure vulnerability in worker mode that fails to clear last HTTP stream response headers between requests, because the reset only happens in RSHUTDOWN, which worker requests skip. Later requests calling http_get_last_response_headers() can read headers fetched by earlier requests on the same worker thread, exposing other users' Set-Cookie or token headers from backend APIs.","summary":"FrankenPHP before 1.13.4 does not clear the last HTTP response headers between requests in worker mode, so a later request can read headers fetched by an earlier request on the same worker thread. An attacker can thereby see other users' Set-Cookie or token headers returned by backend APIs.","severity":"medium","cvss":6.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["frankenphp","php","runtime","self-hosted","worker-mode"],"not_affected_if":["default-config","no-http-get-last-response-headers"],"how_to_check":"- Check the FrankenPHP version with `frankenphp version` and compare it against `1.13.4`.\n- Check whether worker mode is enabled in the server configuration.\n- Check whether application code calls `http_get_last_response_headers()`.","fix":"- FrankenPHP: upgrade to `1.13.4` or later.","status":"open","published_at":"2026-11-04T21:18:10+00:00","first_seen_at":"2026-11-04T21:49:21+00:00","triaged_at":"2026-11-04T21:51:10+00:00","updated_at":"2026-11-04T21:51:10+00:00","category":"runtime","confidence":0.7,"triage":{"at":"2026-11-04T21:51:10Z","model":"claude-haiku-5-5","output":{"fix":"- FrankenPHP: upgrade to `1.13.4` or later.","reach":"internet","title":"FrankenPHP: worker mode leaks earlier requests' HTTP response headers to other users","impact":"medium","summary":"FrankenPHP before 1.13.4 does not clear the last HTTP response headers between requests in worker mode, so a later request can read headers fetched by an earlier request on the same worker thread. An attacker can thereby see other users' Set-Cookie or token headers returned by backend APIs.","audience":"businesses","category":"runtime","nicknames":[],"who_cares":["frankenphp","php","worker-mode","self-hosted"],"confidence":0.7,"fix_status":"available","needs_auth":"unknown","worst_case":"other users' session cookies or tokens readable by a later request","analyst_note":"","how_to_check":"- Check the FrankenPHP version with `frankenphp version` and compare it against `1.13.4`.\n- Check whether worker mode is enabled in the server configuration.\n- Check whether application code calls `http_get_last_response_headers()`.","plain_action":"","needs_analyst":false,"not_affected_if":["default-config","no-http-get-last-response-headers"],"who_is_affected":"Teams running FrankenPHP before 1.13.4 in worker mode, where PHP processes are reused across requests. The exposure needs application code that makes outbound HTTP calls and reads the last response headers, so apps that do not use that function or run without worker mode are less exposed. Operators who run FrankenPHP in default mode can skip it.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000713,"input_tokens":4236,"output_tokens":578,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-122233':15A,18A '-2026':14A,17A '1.13.4':30B,80C 'api':77B,142C 'attack':62B 'backend':76B,141C 'call':113C 'clear':33B,92C 'contain':81C 'cooki':70B,136C 'cve':13A,16A 'disclosur':84C 'earlier':5A,54B,124C 'expos':131C 'fail':90C 'fetch':51B,122C 'frankenphp':1A,19B,28B,78C 'get':115C 'happen':104C 'header':9A,38B,50B,73B,97C,118C,121C,139C 'host':24B 'http':7A,36B,94C,114C 'inform':83C 'last':35B,93C,116C 'later':46B,111C 'leak':4A 'mode':3A,27B,43B,88C 'php':20B 'read':49B,120C 'request':6A,40B,47B,55B,99C,109C,112C,125C 'reset':102C 'respons':8A,37B,96C,117C 'return':74B 'rshutdown':106C 'runtim':21B 'see':65B 'self':23B 'self-host':22B 'set':69B,135C 'set-cooki':68B,134C 'skip':110C 'stream':95C 'therebi':64B 'thread':60B,130C 'token':72B,138C 'user':12A,67B,133C 'vulner':85C 'worker':2A,26B,42B,59B,87C,108C,129C 'worker-mod':25B","nicknames":[],"mitigations":[],"who_affected":"Teams running FrankenPHP before 1.13.4 in worker mode, where PHP processes are reused across requests. The exposure needs application code that makes outbound HTTP calls and reads the last response headers, so apps that do not use that function or run without worker mode are less exposed. Operators who run FrankenPHP in default mode can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["frankenphp","medium","php","runtime","selfhosted","workermode"],"campaign_type":null,"first_public_at":"2026-10-26T16:53:44+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-122233","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-122233","severity":null,"published_at":"2026-11-04T21:18:10+00:00","modified_at":"2026-11-04T21:18:10+00:00","first_seen_at":"2026-11-04T21:49:21+00:00","fetched_at":"2026-11-04T21:49:21+00:00","note":null}],"documents":[{"id":70693,"url":"https://github.com/php/frankenphp/commit/3fade63bb1c1d246926ed8a00520015f94cdc819","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":70694,"url":"https://github.com/php/frankenphp/releases/tag/v1.13.4","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":70695,"url":"https://github.com/php/frankenphp/security/advisories/GHSA-pmvg-8483-mw84","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-10-26T16:53:44+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":70696,"url":"https://www.vulncheck.com/advisories/frankenphp-before-1.13.4-cross-request-response-header-leak-in-worker-mode","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"exploit_sources":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}