{"id":"CVE-2026-116131","kind":"vulnerability","aliases":["CVE-2026-116131"],"related":[],"title":"Perl HTTP::Body: unlimited form fields let one request exhaust memory","description":"HTTP::Body versions before 1.23_01 for Perl allow memory and temporary file exhaustion via an unlimited number of form fields and multipart parts.\n\nThe urlencoded parser splits the whole body on its separators at once, creating one scalar per separator before any field is stored. This costs about 90 bytes of memory per separator byte. The multipart parser creates a temporary file for every part that carries a filename. Neither parser limits how many fields or parts a body may hold.\n\nA remote attacker can exhaust worker memory with a body made of separators, or create thousands of temporary files with one request of small file parts.","summary":"HTTP::Body, a Perl module that parses HTTP request bodies, has no limit on how many form fields or multipart parts a request can carry. A remote attacker can send one oversized body to exhaust worker memory or flood the disk with temporary files.","severity":"medium","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["http-body","package","perl","self-hosted","web-apps"],"not_affected_if":["limits-enforced-at-proxy","no-untrusted-request-bodies"],"how_to_check":"- Check the installed version with `perl -MHTTP::Body -e 'print $HTTP::Body::VERSION'`\n- Find where it is pulled in, for example with `cpanm --info HTTP::Body` or by searching the dependency tree of your Perl app\n- unknown whether other checks are needed","fix":"- Upgrade HTTP::Body to `1.23_01` or later\n- unknown whether a configuration workaround exists before upgrading","status":"open","published_at":"2026-10-28T18:17:12+00:00","first_seen_at":"2026-10-28T18:34:32+00:00","triaged_at":"2026-10-28T18:35:37+00:00","updated_at":"2026-10-28T18:35:37+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-28T18:35:37Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade HTTP::Body to `1.23_01` or later\n- unknown whether a configuration workaround exists before upgrading","reach":"internet","title":"Perl HTTP::Body: unlimited form fields let one request exhaust memory","impact":"medium","summary":"HTTP::Body, a Perl module that parses HTTP request bodies, has no limit on how many form fields or multipart parts a request can carry. A remote attacker can send one oversized body to exhaust worker memory or flood the disk with temporary files.","category":"package","nicknames":[],"who_cares":["perl","http-body","web-apps","self-hosted"],"confidence":0.6,"needs_auth":"no","worst_case":"remote request exhausts worker memory and fills temporary disk space","analyst_note":"Check the NVD entry and the HTTP::Body Changes file for the exact affected range and any mitigation before upgrading; the sources give no CVSS score.","how_to_check":"- Check the installed version with `perl -MHTTP::Body -e 'print $HTTP::Body::VERSION'`\n- Find where it is pulled in, for example with `cpanm --info HTTP::Body` or by searching the dependency tree of your Perl app\n- unknown whether other checks are needed","needs_analyst":true,"not_affected_if":["no-untrusted-request-bodies","limits-enforced-at-proxy"],"who_is_affected":"Perl applications that parse incoming request bodies through HTTP::Body, which includes many web frameworks and servers built on Catalyst or Plack, are exposed when they accept form posts or multipart uploads from untrusted clients. Services that do not accept request bodies from the internet, or that enforce body size and part count limits at a proxy in front, are less exposed.","user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"medium"},"cost_usd":0.000662,"input_tokens":3412,"output_tokens":641,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-116131':14A,17A '-2026':13A,16A '01':78C '1.23':77C '90':122C 'allow':81C 'app':28B 'attack':56B,157C 'bodi':3A,20B,30B,38B,61B,74C,103C,152C,164C 'byte':123C,128C 'carri':53B,140C 'cost':120C 'creat':109C,132C,169C 'cve':12A,15A 'disk':69B 'everi':137C 'exhaust':10A,63B,86C,159C 'field':6A,46B,93C,116C,148C 'file':72B,85C,135C,173C,179C 'filenam':142C 'flood':67B 'form':5A,45B,92C 'hold':154C 'host':25B 'http':2A,19B,29B,36B,73C 'http-bodi':18B 'let':7A 'limit':41B,145C 'made':165C 'mani':44B,147C 'may':153C 'memori':11A,65B,82C,125C,161C 'modul':33B 'multipart':48B,95C,130C 'neither':143C 'number':90C 'one':8A,59B,110C,175C 'overs':60B 'packag':21B 'pars':35B 'parser':99C,131C,144C 'part':49B,96C,138C,150C,180C 'per':112C,126C 'perl':1A,22B,32B,80C 'remot':55B,156C 'request':9A,37B,51B,176C 'scalar':111C 'self':24B 'self-host':23B 'send':58B 'separ':106C,113C,127C,167C 'small':178C 'split':100C 'store':118C 'temporari':71B,84C,134C,172C 'thousand':170C 'unlimit':4A,89C 'urlencod':98C 'version':75C 'via':87C 'web':27B 'web-app':26B 'whole':102C 'worker':64B,160C","nicknames":[],"mitigations":[],"who_affected":"Perl applications that parse incoming request bodies through HTTP::Body, which includes many web frameworks and servers built on Catalyst or Plack, are exposed when they accept form posts or multipart uploads from untrusted clients. Services that do not accept request bodies from the internet, or that enforce body size and part count limits at a proxy in front, are less exposed.","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-116131","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-116131","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:32+00:00","fetched_at":"2026-10-28T18:34:32+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"}