{"id":"CVE-2026-116130","kind":"vulnerability","aliases":["CVE-2026-116130"],"related":[],"title":"Perl HTTP::Parser::XS: encoded NUL byte truncates request path","description":"HTTP::Parser::XS versions before 0.18 for Perl truncate PATH_INFO at an encoded NUL byte in parse_http_request.\n\nThe XS parser URL-decodes the request path and measures the result with strlen(), so PATH_INFO ends at the first byte decoded from %00. The pure-Perl backend is not affected.\n\nA remote attacker can send a path that a proxy or filter checks in full while the application routes on a shorter one.","summary":"HTTP::Parser::XS before 0.18 URL-decodes the request path and measures it with strlen(), so PATH_INFO stops at an encoded %00 byte. An attacker can make a proxy or filter check one path while the application routes on a shorter one.","severity":"low","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["http-parser-xs","package","perl"],"not_affected_if":["no-path-based-filtering","pure-perl-backend"],"how_to_check":"- Check the installed version: `perl -MHTTP::Parser::XS -e 'print $HTTP::Parser::XS::VERSION'`\n- Find where the project declares HTTP::Parser::XS in its cpanfile, Makefile.PL or lock file\n- Check whether the application relies on a proxy or filter path check that runs before the Perl app routes requests","fix":"- HTTP::Parser::XS: move to `0.18` or later","status":"open","published_at":"2026-10-30T13:18:31+00:00","first_seen_at":"2026-10-30T13:30:27+00:00","triaged_at":"2026-10-30T13:32:31+00:00","updated_at":"2026-10-30T13:32:31+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-30T13:32:31Z","model":"claude-haiku-5-5","output":{"fix":"- HTTP::Parser::XS: move to `0.18` or later","reach":"network","title":"Perl HTTP::Parser::XS: encoded NUL byte truncates request path","impact":"medium","summary":"HTTP::Parser::XS before 0.18 URL-decodes the request path and measures it with strlen(), so PATH_INFO stops at an encoded %00 byte. An attacker can make a proxy or filter check one path while the application routes on a shorter one.","audience":"developers","category":"package","nicknames":[],"who_cares":["perl","http-parser-xs"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"Path checks bypassed; requests routed to unintended handlers","analyst_note":"","how_to_check":"- Check the installed version: `perl -MHTTP::Parser::XS -e 'print $HTTP::Parser::XS::VERSION'`\n- Find where the project declares HTTP::Parser::XS in its cpanfile, Makefile.PL or lock file\n- Check whether the application relies on a proxy or filter path check that runs before the Perl app routes requests","plain_action":"","needs_analyst":false,"not_affected_if":["pure-perl-backend","no-path-based-filtering"],"who_is_affected":"Perl applications that use the XS backend of HTTP::Parser::XS to parse requests and that depend on a proxy or filter checking the path before routing. The pure-Perl backend is not affected, so applications using only that backend can skip it.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"low"},"cost_usd":0.000698,"input_tokens":4178,"output_tokens":560,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-116130':13A,16A '-2026':12A,15A '0.18':27B,72C '00':46B,112C 'affect':120C 'applic':61B,138C 'attack':49B,123C 'backend':117C 'byte':7A,47B,82C,109C 'check':56B,133C 'cve':11A,14A 'decod':30B,92C,110C 'encod':5A,45B,80C 'end':105C 'filter':55B,132C 'first':108C 'full':135C 'http':2A,18B,23B,67C,85C 'http-parser-x':17B 'info':41B,77C,104C 'make':51B 'measur':35B,97C 'nul':6A,81C 'one':57B,66B,143C 'packag':21B 'pars':84C 'parser':3A,19B,24B,68C,89C 'path':10A,33B,40B,58B,76C,95C,103C,127C 'perl':1A,22B,74C,116C 'proxi':53B,130C 'pure':115C 'pure-perl':114C 'remot':122C 'request':9A,32B,86C,94C 'result':99C 'rout':62B,139C 'send':125C 'shorter':65B,142C 'stop':42B 'strlen':38B,101C 'truncat':8A,75C 'url':29B,91C 'url-decod':28B,90C 'version':70C 'xs':4A,20B,25B,69C,88C","nicknames":[],"mitigations":[],"who_affected":"Perl applications that use the XS backend of HTTP::Parser::XS to parse requests and that depend on a proxy or filter checking the path before routing. The pure-Perl backend is not affected, so applications using only that backend can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"first_public_at":"2026-10-30T13:18:31+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-116130","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-116130","severity":null,"published_at":"2026-10-30T13:18:31+00:00","modified_at":"2026-10-30T13:18:31+00:00","first_seen_at":"2026-10-30T13:30:27+00:00","fetched_at":"2026-10-30T13:30:27+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}