{"id":"CVE-2026-128021","kind":"vulnerability","aliases":["CVE-2026-128021"],"related":[],"title":"FrankenPHP: libxml errors leak between clients in worker mode","description":"FrankenPHP before 1.13.2 contains an information disclosure vulnerability that allows later clients to read earlier clients' libxml errors because worker mode never resets LIBXML(error_list) between requests. Attackers sending requests to the same worker thread can call libxml_get_errors() or libxml_get_last_error() to obtain other clients' parsed-document fragments and server filesystem paths.","summary":"FrankenPHP before 1.13.2 never clears libxml error state between requests in worker mode, so a later client can read earlier clients' libxml errors. An attacker can get other clients' parsed-document fragments and server filesystem paths.","severity":"medium","cvss":6.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["frankenphp","libxml","php","runtime","worker-mode"],"not_affected_if":["default-config","non-worker-mode"],"how_to_check":"- `frankenphp version` shows the installed version; below `1.13.2` is affected\n- Check whether worker mode is enabled in the FrankenPHP or Caddy configuration, since the flaw is in worker mode\n- Check whether the application calls libxml parsing on untrusted input","fix":"- FrankenPHP: move to `1.13.2` or later","status":"open","published_at":"2026-11-13T10:18:07+00:00","first_seen_at":"2026-11-13T10:47:31+00:00","triaged_at":"2026-11-13T10:55:13+00:00","updated_at":"2026-11-13T10:55:13+00:00","category":"runtime","confidence":0.7,"triage":{"at":"2026-11-13T10:55:13Z","model":"claude-haiku-5-5","output":{"fix":"- FrankenPHP: move to `1.13.2` or later","reach":"internet","title":"FrankenPHP: libxml errors leak between clients in worker mode","impact":"medium","summary":"FrankenPHP before 1.13.2 never clears libxml error state between requests in worker mode, so a later client can read earlier clients' libxml errors. An attacker can get other clients' parsed-document fragments and server filesystem paths.","audience":"businesses","category":"runtime","nicknames":[],"who_cares":["php","frankenphp","worker-mode","libxml"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"other clients' parsed-document fragments and file paths readable","analyst_note":"","how_to_check":"- `frankenphp version` shows the installed version; below `1.13.2` is affected\n- Check whether worker mode is enabled in the FrankenPHP or Caddy configuration, since the flaw is in worker mode\n- Check whether the application calls libxml parsing on untrusted input","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["default-config","non-worker-mode"],"who_is_affected":"Only servers running FrankenPHP in worker mode are exposed, because worker threads persist state across requests. Servers that run FrankenPHP in the default mode, or that do not use libxml, are less exposed. unknown whether the sources list any further configuration conditions.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000727,"input_tokens":4626,"output_tokens":529,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-128021':12A,15A '-2026':11A,14A '1.13.2':25B,62C 'allow':69C 'attack':47B,88C 'call':97C 'clear':27B 'client':6A,39B,43B,51B,71C,75C,109C 'contain':63C 'cve':10A,13A 'disclosur':66C 'document':54B,112C 'earlier':42B,74C 'error':3A,29B,45B,77C,84C,100C,105C 'filesystem':58B,116C 'fragment':55B,113C 'frankenphp':1A,16B,23B,60C 'get':49B,99C,103C 'inform':65C 'last':104C 'later':38B,70C 'leak':4A 'libxml':2A,17B,28B,44B,76C,83C,98C,102C 'list':85C 'mode':9A,22B,35B,80C 'never':26B,81C 'obtain':107C 'pars':53B,111C 'parsed-docu':52B,110C 'path':59B,117C 'php':18B 'read':41B,73C 'request':32B,87C,90C 'reset':82C 'runtim':19B 'send':89C 'server':57B,115C 'state':30B 'thread':95C 'vulner':67C 'worker':8A,21B,34B,79C,94C 'worker-mod':20B","nicknames":[],"mitigations":[],"who_affected":"Only servers running FrankenPHP in worker mode are exposed, because worker threads persist state across requests. Servers that run FrankenPHP in the default mode, or that do not use libxml, are less exposed. unknown whether the sources list any further configuration conditions.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["frankenphp","libxml","medium","php","runtime","workermode"],"campaign_type":null,"search_a":"'-128021':12A,15A '-2026':11A,14A 'client':6A 'cve':10A,13A 'error':3A 'frankenphp':1A 'leak':4A 'libxml':2A 'mode':9A 'worker':8A","search_b":"'1.13.2':25B 'attack':47B 'clear':27B 'client':39B,43B,51B 'document':54B 'earlier':42B 'error':29B,45B 'filesystem':58B 'fragment':55B 'frankenphp':16B,23B 'get':49B 'later':38B 'libxml':17B,28B,44B 'mode':22B,35B 'never':26B 'pars':53B 'parsed-docu':52B 'path':59B 'php':18B 'read':41B 'request':32B 'runtim':19B 'server':57B 'state':30B 'worker':21B,34B 'worker-mod':20B","search_c":"'1.13.2':62C 'allow':69C 'attack':88C 'call':97C 'client':71C,75C,109C 'contain':63C 'disclosur':66C 'document':112C 'earlier':74C 'error':77C,84C,100C,105C 'filesystem':116C 'fragment':113C 'frankenphp':60C 'get':99C,103C 'inform':65C 'last':104C 'later':70C 'libxml':76C,83C,98C,102C 'list':85C 'mode':80C 'never':81C 'obtain':107C 'pars':111C 'parsed-docu':110C 'path':117C 'read':73C 'request':87C,90C 'reset':82C 'send':89C 'server':115C 'thread':95C 'vulner':67C 'worker':79C,94C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-10-21T18:29:22+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:H/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-128021","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-128021","severity":null,"published_at":"2026-11-13T10:18:07+00:00","modified_at":"2026-11-13T10:18:07+00:00","first_seen_at":"2026-11-13T10:47:31+00:00","fetched_at":"2026-11-13T10:47:31+00:00","note":null}],"documents":[{"id":145342,"url":"https://github.com/php/frankenphp/security/advisories/GHSA-4gfw-9v29-gp9h","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-10-21T18:29:22+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":145343,"url":"https://www.vulncheck.com/advisories/frankenphp-before-1.13.2-information-disclosure-via-libxml-error-state-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"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}