Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft HTTP request with both headers
-
DeliverySend through front-end proxy
-
ExploitProxy and backend interpret differently
-
ExecutionSmuggle second request
-
PersistBackend processes injected payload
-
ImpactAttacker gains unlogged access
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V4 - API and Web Service HTTP request consistency
|
| Exploitation Conditions | The vulnerability requires: (1) an HTTP request explicitly containing both Content-Length and Transfer-Encoding: chunked headers in the same request; (2) Starlet deployed behind a front-end reverse proxy or load balancer that implements RFC 7230 correctly and prioritizes Transfer-Encoding; (3) network path between the attacker and Starlet (can be direct or through proxy). Exploitation does not require authentication, user interaction, or Starlet-specific configuration-it occurs against default Starlet behavior. However, the attack is only effective in a multi-tier proxy architecture where the front-end and backend interpret headers inconsistently. Standalone Starlet deployments directly exposed to clients without an intervening proxy are not vulnerable to request smuggling in the classical sense, although they still violate RFC 7230 and reject such requests only after the patch. |
| Impact | While CVSS 5.3 with network vector and low attack complexity appears moderate, the EPSS score of 0.01% (percentile 0%) indicates extremely low exploitation probability in practice. The integrity impact (I:L) reflects request smuggling's potential to modify HTTP semantics, but the confidentiality and availability impacts are absent. The vulnerability requires a specific proxy chain topology (front-end proxy and Starlet backend with differing header precedence interpretations) and does not affect standalone Starlet deployments or proxies that correctly implement RFC 7230. No CISA KEV listing or public exploit code is reported, and the attack surface is further narrowed because it only manifests when both headers are explicitly sent-standard HTTP clients rarely construct such malformed requests. The low EPSS combined with absence of active exploitation data suggests this is a compliance/defense-in-depth issue rather than an urgent operational risk, unless the specific deployment pattern (Starlet behind a vulnerable proxy) is confirmed in an organization's infrastructure. |
| Exploit ScenarioDerived | An attacker sends an HTTP request with both Content-Length: 3 and Transfer-Encoding: chunked headers to a reverse proxy (e.g., nginx, which correctly prioritizes Transfer-Encoding) that forwards the request to an unpatched Starlet backend. The proxy interprets the request body as three bytes, while Starlet incorrectly interprets it as chunked-encoded data spanning multiple frames. This creates a desynchronization: the proxy forwards what it believes is a complete request, but Starlet parses additional data that the proxy intended for the next request, allowing an attacker to inject a hidden HTTP request that the backend processes while the proxy logs and forwards a different request. No public exploit code is documented at the time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 04, 2026
HTTP request smuggling in Starlet through version 0.31 allows remote unauthenticated attackers to bypass header validation by exploiting incorrect precedence of Content-Length over Transfer-Encoding headers. The vulnerability violates RFC 7230 section 3.3.3, which mandates that Transfer-Encoding must take precedence when both headers are present. An attacker positioned between a client and Starlet-based backend can craft malicious requests that are interpreted differently by a front-end reverse proxy and the Starlet server, enabling request smuggling attacks with integrity impact.
RemediationAI
Upgrade Starlet to a version released after the patch commit a7d5dfd1862aafa43e5eaca0fdb6acf4cc15b2d0 (exact patched version number not specified in provided data, consult CPAN or vendor release notes). The upstream fix adds validation to reject HTTP requests containing both Transfer-Encoding and Content-Length headers, returning a 400 Bad Request response as per RFC 7230 guidance. No workarounds are documented for unpatched versions, but deployment-level mitigation can include placing a RFC 7230-compliant reverse proxy (such as nginx or Apache with appropriate configuration) in front of Starlet to normalize or reject malformed requests before they reach the backend. If immediate patching is not feasible, restrict Starlet to trusted networks and avoid exposing it directly to the internet; however, this does not eliminate risk in multi-tier proxy architectures. Refer to https://github.com/kazuho/Starlet for release notes and https://vuldb.com/vuln/360875 for additional advisory details.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Starlet is a high-performance Perl PSGI application server. The vulnerability resides in the HTTP request parsing logic (lib/Starlet/Server.pm, handle_connection subroutine) where the server incorrectly prioritizes the Content-Length header when both Content-Length and Transfer-Encoding: chunked are present in the same HTTP request. RFC 7230 section 3.3.3 explicitly requires that Transfer-Encoding takes precedence, and the presence of both headers together signals a potential request smuggling or response splitting attack. The root cause is CWE-444 (Inconsistent Interpretation of HTTP Requests by HTTP Entities), a well-known class enabling cache poisoning, session fixation, and request smuggling attacks in proxy chains. The CPE affected is cpe:2.3:a:kazuho:starlet:*:*:*:*:*:*:*:* for all versions through 0.31.
Know when Starlet gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Primary rating from Vendor (CPANSec) · only source for this CVE.
CVSS VectorVendor: CPANSec
Lifecycle Timeline
3DescriptionCVE.org
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.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
HTTP request smuggling exploits inconsistencies in how front-end and back-end servers parse HTTP message boundaries.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
EUVD-2026-26806
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB