{"id":"CVE-2026-116133","kind":"vulnerability","aliases":["CVE-2026-116133"],"related":[],"title":"Perl HTTP::Body: malformed multipart upload burns CPU via quadratic rescanning","description":"HTTP::Body versions before 1.23_01 for Perl allow CPU exhaustion via quadratic rescanning of a multipart body with a missing or malformed boundary.\n\nBefore the first part, and between parts, the multipart parser searches the whole buffered body for the next boundary. On a miss it keeps everything and searches again from the start when the next chunk arrives. A body with no boundary, or with a delimiter followed by neither CRLF nor \"--\", is therefore rescanned on every chunk, taking time quadratic in its size.\n\nA remote attacker can exhaust worker CPU with a few such requests.","summary":"HTTP::Body, a Perl module that parses form and multipart request bodies, rescans its whole buffer for each new chunk when a multipart body has a missing or malformed boundary. A remote attacker can send a few such requests to exhaust worker CPU and slow or stall the service.","severity":"medium","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["catalyst","package","perl","psgi","self-hosted","web-apps"],"not_affected_if":["body-size-capped-at-proxy","no-multipart-uploads"],"how_to_check":"- Run `perl -MHTTP::Body -e 'print $HTTP::Body::VERSION'` or `cpanm --info HTTP::Body` to read the installed version\n- Check the lockfile or `cpanfile.snapshot` for the HTTP::Body version in use","fix":"- Upgrade HTTP::Body to `1.23_01` or later\n- Until upgraded, cap the request body size at the web server or proxy so oversized multipart uploads are rejected early","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:36+00:00","updated_at":"2026-10-28T18:35:36+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-28T18:35:36Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade HTTP::Body to `1.23_01` or later\n- Until upgraded, cap the request body size at the web server or proxy so oversized multipart uploads are rejected early","reach":"internet","title":"Perl HTTP::Body: malformed multipart upload burns CPU via quadratic rescanning","impact":"low","summary":"HTTP::Body, a Perl module that parses form and multipart request bodies, rescans its whole buffer for each new chunk when a multipart body has a missing or malformed boundary. A remote attacker can send a few such requests to exhaust worker CPU and slow or stall the service.","category":"package","nicknames":[],"who_cares":["perl","catalyst","psgi","web-apps","self-hosted"],"confidence":0.6,"needs_auth":"no","worst_case":"Worker processes stall on CPU, causing denial of service.","analyst_note":"","how_to_check":"- Run `perl -MHTTP::Body -e 'print $HTTP::Body::VERSION'` or `cpanm --info HTTP::Body` to read the installed version\n- Check the lockfile or `cpanfile.snapshot` for the HTTP::Body version in use","needs_analyst":false,"not_affected_if":["no-multipart-uploads","body-size-capped-at-proxy"],"who_is_affected":"Perl applications that parse multipart request bodies through HTTP::Body, typically through Catalyst or other PSGI or CGI frameworks that call it to handle uploads, are exposed when reachable from the internet or an untrusted network. Applications that do not accept multipart uploads from untrusted clients, or that sit behind a proxy that caps body size tightly, can skip it.","user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"medium"},"cost_usd":0.000652,"input_tokens":3418,"output_tokens":620,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-116133':14A,17A '-2026':13A,16A '01':82C '1.23':81C 'allow':85C 'app':27B 'arriv':136C 'attack':60B,165C 'bodi':3A,29B,39B,51B,78C,94C,115C,138C 'boundari':57B,100C,119C,141C 'buffer':43B,114C 'burn':7A 'catalyst':18B 'chunk':47B,135C,156C 'cpu':8A,70B,86C,169C 'crlf':149C 'cve':12A,15A 'delimit':145C 'everi':155C 'everyth':125C 'exhaust':68B,87C,167C 'first':103C 'follow':146C 'form':35B 'host':24B 'http':2A,28B,77C 'keep':124C 'malform':4A,56B,99C 'miss':54B,97C,122C 'modul':32B 'multipart':5A,37B,50B,93C,109C 'neither':148C 'new':46B 'next':118C,134C 'packag':19B 'pars':34B 'parser':110C 'part':104C,107C 'perl':1A,20B,31B,84C 'psgi':21B 'quadrat':10A,89C,159C 'remot':59B,164C 'request':38B,66B,174C 'rescan':11A,40B,90C,153C 'search':111C,127C 'self':23B 'self-host':22B 'send':62B 'servic':76B 'size':162C 'slow':72B 'stall':74B 'start':131C 'take':157C 'therefor':152C 'time':158C 'upload':6A 'version':79C 'via':9A,88C 'web':26B 'web-app':25B 'whole':42B,113C 'worker':69B,168C","nicknames":[],"mitigations":[],"who_affected":"Perl applications that parse multipart request bodies through HTTP::Body, typically through Catalyst or other PSGI or CGI frameworks that call it to handle uploads, are exposed when reachable from the internet or an untrusted network. Applications that do not accept multipart uploads from untrusted clients, or that sit behind a proxy that caps body size tightly, can skip it.","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-116133","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-116133","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"}