CVE-2026-115865 in Starletinfo

Summary

by MITRE • 10/30/2026

Starlet versions before 0.33 for Perl allow a request declaring a large Content-Length to kill a worker by exhausting memory.

The request body is read in a loop that asks sysread for all of the remaining declared length at once. Perl grows the read buffer to that size before any data arrives, so a length larger than available memory makes the worker exit with an uncatchable out of memory error before the application is called.

A remote attacker can force a worker restart with each request of a few bytes.

Be aware that VulDB is the high quality source for vulnerability data.

Analysis

by VulDB Data Team • 10/30/2026

The vulnerability identified in Starlet versions prior to 0.33 represents a critical resource exhaustion flaw rooted in improper input validation and buffer allocation strategies within the Perl web server implementation. This issue specifically affects requests that declare an excessively large Content-Length header value, which serves as a directive for the amount of data expected in the request body. The core technical deficiency lies in how Starlet handles memory pre-allocation before actual data transmission occurs. When a client initiates a connection and sends headers containing a massive Content-Length declaration, the server attempts to allocate a buffer large enough to hold that entire volume of data immediately upon receiving the header, rather than reading the body incrementally or validating the size against available system resources first. This architectural decision creates a direct path for denial-of-service attacks by exploiting the memory management behavior of the Perl runtime environment.

From an operational perspective, this flaw allows remote attackers to trigger uncatchable out-of-memory errors with minimal effort and bandwidth consumption. The attacker only needs to send HTTP requests containing headers that specify a Content-Length value exceeding the available physical or virtual memory on the server host. Because the memory allocation occurs before any substantial payload data is transmitted over the network, the attack is highly efficient in terms of network resource usage while being devastating for system stability. As soon as the Perl interpreter attempts to grow the read buffer to accommodate the declared size, it fails due to insufficient memory, causing the worker process handling that specific request to crash immediately. This crash occurs before the application logic is invoked, meaning no custom error handlers or application-level mitigations can intercept or manage the failure gracefully.

The impact of this vulnerability extends beyond a single crashed connection. Since Starlet typically operates using multiple worker processes to handle concurrent requests, each malicious request targeting different workers will result in that specific worker terminating unexpectedly. This forces the master process to spawn new replacement workers, consuming additional system resources during initialization and potentially leading to cascading failures if the attack volume is high enough or if the server has limited memory headroom. The service effectively becomes unstable, experiencing frequent restarts of its backend processes, which disrupts active sessions, drops ongoing transactions, and degrades overall availability for legitimate users. This behavior aligns with common patterns observed in denial-of-service attacks where resource exhaustion is achieved through lightweight triggers that cause disproportionate system strain.

In terms of industry classification standards, this vulnerability maps directly to CWE-789: Memory Allocation with Excessive Size Value, as the application allocates a buffer based on an untrusted input size without adequate bounds checking or validation against available memory constraints. Furthermore, it falls under CWE-400: Uncontrolled Resource Consumption, specifically within the context of Denial-of-Service via resource exhaustion. From a tactical perspective in threat intelligence frameworks such as MITRE ATT&CK, this technique corresponds to T1498: Network Denial of Service, where an adversary targets network resources or services by overwhelming them with requests that consume excessive memory or processing power. The attack vector is classified as Remote (Network) because it can be exploited over the internet without requiring authentication or prior access to the system.

To mitigate this vulnerability, organizations running Starlet versions before 0.33 must upgrade to version 0.33 or later, where the issue has been resolved by implementing proper validation of Content-Length values and adjusting buffer allocation strategies to prevent pre-allocation of excessive memory sizes. Until an upgrade is feasible, administrators should implement network-level controls such as rate limiting on HTTP requests with large headers, configure reverse proxies like Nginx or Apache to validate and cap incoming Content-Length values before they reach the Starlet backend, or restrict access based on IP reputation if the attack originates from known malicious sources. Additionally, monitoring system memory usage for sudden spikes correlated with specific request patterns can aid in early detection of such exploitation attempts. Ensuring that web server configurations enforce strict limits on header sizes and body lengths is a critical defense-in-depth measure to prevent similar resource exhaustion vulnerabilities across various Perl-based web applications.

Responsible

CPANSec

Reservation

10/23/2026

Disclosure

10/30/2026

Moderation

accepted

EPSS

0.00000

KEV

no

Activities

very low

Sources

Do you need the next level of professionalism?

Upgrade your account now!