{"id":"CVE-2026-116135","kind":"vulnerability","aliases":["CVE-2026-116135"],"related":[],"title":"Perl HTTP::Body: mixed-case percent escapes dropped from form fields","description":"HTTP::Body versions before 1.23_01 for Perl drop mixed-case percent escapes from urlencoded form fields instead of decoding them.\n\nThe decode table holds only the all-lowercase and all-uppercase spelling of each hex pair, while the escape pattern matches either case. An escape such as %aB finds no entry and is replaced with nothing, joining the bytes on either side. Hex digits in percent escapes are case-insensitive, and conforming decoders return the byte.\n\nA remote attacker can send a field name or value that a conforming decoder in front of the application reads differently, so that pass%aBword reaches the application as password.","summary":"HTTP::Body for Perl drops percent escapes written with mixed-case hex digits (such as %aB) from urlencoded form fields instead of decoding them. An attacker can send a field name or value that a conforming decoder in front of the app reads differently, so a request for pass%aBword reaches the application as password.","severity":"unknown","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["http-body","package","perl","web-apps"],"not_affected_if":["no-http-body-dependency"],"how_to_check":"- Check the installed HTTP::Body version with `perl -MHTTP::Body -e 'print $HTTP::Body::VERSION'`\n- Look for HTTP::Body in the application's cpanfile, cpanfile.snapshot or Makefile.PL dependency lists\n- Check whether a proxy or WAF decodes form fields before the Perl app sees them, since a mismatch between decoders is what makes this exploitable","fix":"- Upgrade HTTP::Body to `1.23_01` or later\n- unknown whether a patched release number beyond that is needed or what the upstream fix commit contains","status":"open","published_at":"2026-10-28T18:17:12+00:00","first_seen_at":"2026-10-28T18:34:33+00:00","triaged_at":"2026-10-28T18:35:33+00:00","updated_at":"2026-10-28T18:35:33+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-28T18:35:33Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade HTTP::Body to `1.23_01` or later\n- unknown whether a patched release number beyond that is needed or what the upstream fix commit contains","reach":"internet","title":"Perl HTTP::Body: mixed-case percent escapes dropped from form fields","impact":"medium","summary":"HTTP::Body for Perl drops percent escapes written with mixed-case hex digits (such as %aB) from urlencoded form fields instead of decoding them. An attacker can send a field name or value that a conforming decoder in front of the app reads differently, so a request for pass%aBword reaches the application as password.","category":"package","nicknames":[],"who_cares":["perl","http-body","web-apps"],"confidence":0.6,"needs_auth":"unknown","worst_case":"Parameter filters bypassed; attacker-controlled field names reach the app as trusted names.","analyst_note":"Confirm the affected version range and whether the sources give a patched release beyond 1.23_01; check the NVD entry for the CVSS score and exploitation status.","how_to_check":"- Check the installed HTTP::Body version with `perl -MHTTP::Body -e 'print $HTTP::Body::VERSION'`\n- Look for HTTP::Body in the application's cpanfile, cpanfile.snapshot or Makefile.PL dependency lists\n- Check whether a proxy or WAF decodes form fields before the Perl app sees them, since a mismatch between decoders is what makes this exploitable","needs_analyst":true,"not_affected_if":["no-http-body-dependency"],"who_is_affected":"Applications that parse urlencoded form bodies with HTTP::Body and sit behind a component that decodes the same fields differently, such as a proxy, WAF or access-control layer. Applications that do not use HTTP::Body, or that have no decoder in front that interprets fields differently, are less exposed; the sources do not say how common such a setup is.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"unknown"},"cost_usd":0.000693,"input_tokens":3424,"output_tokens":701,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-116135':15A,18A '-2026':14A,17A '01':88C '1.23':87C 'ab':43B,134C 'abword':77B,188C 'all-lowercas':111C 'all-uppercas':115C 'app':26B,69B 'applic':80B,182C,191C 'attack':53B,166C 'bodi':3A,21B,28B,84C 'byte':145C,163C 'case':6A,38B,94C,129C,156C 'case-insensit':155C 'conform':63B,159C,176C 'cve':13A,16A 'decod':50B,64B,103C,106C,160C,177C 'differ':71B,184C 'digit':40B,150C 'drop':9A,31B,91C 'either':128C,147C 'entri':137C 'escap':8A,33B,96C,125C,131C,153C 'field':12A,47B,57B,100C,170C 'find':135C 'form':11A,46B,99C 'front':66B,179C 'hex':39B,121C,149C 'hold':108C 'http':2A,20B,27B,83C 'http-bodi':19B 'insensit':157C 'instead':48B,101C 'join':143C 'lowercas':113C 'match':127C 'mix':5A,37B,93C 'mixed-cas':4A,36B,92C 'name':58B,171C 'noth':142C 'packag':22B 'pair':122C 'pass':76B,187C 'password':82B,193C 'pattern':126C 'percent':7A,32B,95C,152C 'perl':1A,23B,30B,90C 'reach':78B,189C 'read':70B,183C 'remot':165C 'replac':140C 'request':74B 'return':161C 'send':55B,168C 'side':148C 'spell':118C 'tabl':107C 'uppercas':117C 'urlencod':45B,98C 'valu':60B,173C 'version':85C 'web':25B 'web-app':24B 'written':34B","nicknames":[],"mitigations":[],"who_affected":"Applications that parse urlencoded form bodies with HTTP::Body and sit behind a component that decodes the same fields differently, such as a proxy, WAF or access-control layer. Applications that do not use HTTP::Body, or that have no decoder in front that interprets fields differently, are less exposed; the sources do not say how common such a setup is.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-28T18:17:12+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-116135","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-116135","severity":null,"published_at":"2026-10-28T18:17:12+00:00","modified_at":"2026-10-28T18:17:12+00:00","first_seen_at":"2026-10-28T18:34:33+00:00","fetched_at":"2026-10-28T18:34:33+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"}