CVE-2026-40561

Starlet versions through 0.31 for Perl allows HTTP Request Smuggling via Improper Header Precedence

Published May 3, 2026 CVSS 3.1 · 5.3 Medium EPSS < 1% KEV · Not listed
Description
Starlet versions through 0.31 for Perl allows HTTP Request Smuggling via Improper Header Precedence.

Starlet incorrectly prioritizes "Content-Length" over "Transfer-Encoding: chunked" when both headers are present in an HTTP request. Per RFC 7230 3.3.3, Transfer-Encoding must take precedence.

An attacker could exploit this to smuggle malicious HTTP requests via a front-end reverse proxy.

Analysis

AI-generated

Technical impact

Starlet for Perl up to version 0.31 incorrectly prioritizes the Content-Length header over Transfer-Encoding: chunked when both are present in an HTTP request. This violates RFC 7230 section 3.3.3, where Transfer-Encoding must take precedence. Consequently, an attacker can craft requests that are interpreted differently by a front‑end reverse proxy and an upstream server, enabling malicious requests to be smuggled through the proxy. The vulnerability is a class‑404 CWE‑444 weakness in header handling and could allow the attacker to inject or modify traffic intended for a downstream service.

Affected Systems

The affected product is Starlet for Perl supplied by Kazuho. Versions through 0.31 are impacted. Users running Starlet 0.31 or earlier are susceptible; newer releases are not noted to be affected.

Risk and Exploitability

Because the flaw relies on standard HTTP header handling, the attack surface is significant for any deployment using Starlet behind a proxy that may send both headers. The EPSS score of < 1% indicates a low probability that this vulnerability will be exploited in the wild, and the issue is not listed in the CISA KEV catalog. While the CVSS score of 5.3 represents medium severity, the potential to alter downstream requests still poses a risk. The attack vector is via an HTTP client that inserts both headers in a single request to the proxy. Effective exploitation requires the proxy to not properly enforce RFC rules, a condition likely present in default Starlet configurations.

Remediation

Vendor Solution

Upgrade to Starlet 0.32 or later.


Vendor Workaround

Migrate to Starman 0.4018 or later which has fixed this issue or apply the patch.


OpenCVE Recommended Actions

  • Apply the upstream patch from commit a7d5dfd1862aafa43e5eaca0fdb6acf4cc15b2d0 provided by Kazuho
  • Migrate to Starman version 0.4018 or later where the header precedence bug is fixed
  • Ensure that any request forwarded to Starlet does not contain both Content-Length and Transfer-Encoding: chunked headers, or that proxies perform their own header validation

Generated by OpenCVE AI on May 4, 2026 at 15:23 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories available
History
Type Values Removed Values Added
CPEs cpe:2.3:a:kazuho:starlet:*:*:*:*:*:perl:*:*
Type Values Removed Values Added
First Time appeared Kazuho
Kazuho starlet
Vendors & Products Kazuho
Kazuho starlet
Type Values Removed Values Added
Metrics cvssV3_1

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

ssvc

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

Type Values Removed Values Added
Description Starlet versions through 0.31 for Perl allows HTTP Request Smuggling via Improper Header Precedence. Starlet incorrectly prioritizes "Content-Length" over "Transfer-Encoding: chunked" when both headers are present in an HTTP request. Per RFC 7230 3.3.3, Transfer-Encoding must take precedence. An attacker could exploit this to smuggle malicious HTTP requests via a front-end reverse proxy.
Title Starlet versions through 0.31 for Perl allows HTTP Request Smuggling via Improper Header Precedence
Weaknesses CWE-444
References
Weaknesses
  • CWE-444

    Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling')

Sources

Status
PUBLISHED
Assigner
CPANSec
Published
Updated
May 7, 2026, 4:45 PM
Reserved
Apr 14, 2026, 11:35 AM
Status
Modified
Published
May 3, 2026, 1:15 AM
Modified
Oct 26, 2026, 8:10 PM