CVE-2026-115822
UnknownSummary
Starman versions before 0.4019 for Perl allow CPU exhaustion via quadratic regex backtracking when parsing chunked request bodies. A hex line followed by a bare LF and CRLF never matches, and each attempt backtracks quadratically. Line length is unbounded.
Risk Assessment
A remote attacker can exhaust worker CPU, causing denial of service on any route. Crafted requests are sufficient to trigger it.
Recommendation
Update Starman to version 0.4019 or later. Consider limiting header and line lengths at the proxy level.
Other vulnerabilities in Starman
See all- CVE-2026-115824Unknown
Starman versions before 0.4019 for Perl allow memory exhaustion via unbounded buffering of chunked request bodies. The decoder does not limit chunk-size line length or buffer size. A remote attacker can exhaust worker memory with a single connection.
- CVE-2026-115823Unknown
Starman versions before 0.4019 for Perl send response bodies for HEAD requests, desynchronizing responses on keep-alive connections. Bodies are also sent for 1xx, 204, and 304 statuses. A client or proxy may read those bytes as the start of the next response.
- CVE-2026-115817Unknown
Starman versions before 0.4019 for Perl allow a stalled request body to hold a worker indefinitely, as read_timeout covers only headers. Bodies are read with blocking reads and no deadline. An attacker can occupy all workers with a few connections.
- CVE-2026-40560High
Starman for Perl before version 0.4018 is vulnerable to HTTP Request Smuggling due to improper header precedence. Starman incorrectly prioritizes Content-Length over Transfer-Encoding: chunked, violating RFC 7230. An attacker can exploit this to smuggle malicious HTTP requests through a front-end reverse proxy.
Original NVD description (English source)
Starman versions before 0.4019 for Perl allow CPU exhaustion via quadratic regex backtracking when parsing chunked request bodies. Starman decodes chunked request bodies before calling the application, matching each chunk-size line with `s/^(([0-9a-fA-F]+).*\015\012)//`. A line of hex digits followed by a bare LF and then CRLF never matches, because `.` does not match LF, and each failed attempt backtracks in time quadratic in the length of the hex run. Nothing limits the length of the line. A remote attacker can exhaust worker CPU by sending such requests to any route.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

