CVE-2026-114629

Web::Simple versions before 0.035 for Perl allocate a buffer sized by the Content-Length header for urlencoded body parameters

Published Oct 24, 2026 CVSS 3.1 · 7.5 High EPSS < 1% KEV · Not listed
Description
Web::Simple versions before 0.035 for Perl allocate a buffer sized by the Content-Length header for urlencoded body parameters.

Web::Dispatch::ParamParser::get_unpacked_body_from reads an application/x-www-form-urlencoded body using a single read call, with no cap and the return value ignored. Perl's read grows the buffer to the requested length before reading, so the declared Content-Length determines the allocation.

An attacker can trigger this through any route whose dispatch specification has a % body-parameter match, such as sub (POST + %name=), sending a Content-Length far larger than the body actually sent. No authentication is involved.

Analysis

AI-generated

Technical impact

Web::Simple releases before 0.035 allocate a buffer sized by the Content-Length header for all urlencoded request bodies. When a client sends a Content-Length header that greatly exceeds the actual payload size, the library pre‑allocates the claimed amount of memory before reading any data. Because the allocated buffer grows as needed, a crafted request can cause the process to request gigabytes of memory, potentially exhausting system resources and causing the application or whole server to crash or become unresponsive. This vulnerability is an uncontrolled memory allocation issue not linked to any authentication or privileged action, and it directly impacts availability by enabling an attacker to trigger resource exhaustion through ordinary HTTP POST or PUT requests.

Affected Systems

All deployments of the Perl module Web::Simple with version numbers older than 0.035 are affected. The vulnerability exists in the Web::Dispatch::ParamParser component that handles application/x-www-form-urlencoded bodies. End‑points that accept POST or other methods with a body parameter match (% body‑parameter) are susceptible.

Risk and Exploitability

The attacker can exploit the flaw by sending a simple HTTP request to any route that parses URL‑encoded bodies, with a bogus Content-Length header containing a very large value. No authentication or privilege escalation is required. The EPSS score is < 1%, and the vulnerability is not listed in the CISA KEV catalog, indicating it may not yet have seen broad exploitation. However, the local system or a web application that runs Web::Simple can be shut down or severely degraded if memory exhaustion is forced. The CVSS score is 7.5, but the nature of the vulnerability and the ease of exploitation suggest a high impact scenario.

Remediation

Vendor Solution

Upgrade to Web::Simple 0.035 or later, and in the application configure $Web::Dispatch::ParamParser::MAX_BODY_SIZE.


Vendor Workaround

For deployments that cannot upgrade but are running behind a reverse proxy, configure the proxy to reject requests above a maxiumum Content-Length.


OpenCVE Recommended Actions

  • Upgrade Web::Simple to version 0.035 or later.
  • Configure the application to set $Web::Dispatch::ParamParser::MAX_BODY_SIZE to limit the maximum number of bytes read for a body.
  • If a reverse proxy is used, configure it to reject any request with a Content-Length above a safe threshold.

Generated by OpenCVE AI on November 2, 2026 at 16:27 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories available
History
Type Values Removed Values Added
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N'}

ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description Web::Simple versions before 0.035 for Perl allocate a buffer sized by the Content-Length header for urlencoded body parameters. Web::Dispatch::ParamParser::get_unpacked_body_from reads an application/x-www-form-urlencoded body using a single read call, with no cap and the return value ignored. Perl's read grows the buffer to the requested length before reading, so the declared Content-Length determines the allocation. An attacker can trigger this through any route whose dispatch specification has a % body-parameter match, such as sub (POST + %name=), sending a Content-Length far larger than the body actually sent. No authentication is involved.
Title Web::Simple versions before 0.035 for Perl allocate a buffer sized by the Content-Length header for urlencoded body parameters
Weaknesses CWE-789
References

Subscriptions

No data.

Weaknesses
  • CWE-789

    Memory Allocation with Excessive Size Value

Sources

Status
PUBLISHED
Assigner
CPANSec
Published
Updated
Nov 2, 2026, 2:09 PM
Reserved
Oct 21, 2026, 9:43 PM
Status
Awaiting Analysis
Published
Oct 24, 2026, 2:16 PM
Modified
Nov 2, 2026, 3:17 PM