Description
Starlet versions before 0.33 for Perl send a body in responses to HEAD requests, corrupting the next response on a persistent or pipelined connection.

The request method is not passed to the response writer, so whatever body the application returns for a HEAD request is sent. With Plack::Middleware::Head the body is empty, but an HTTP/1.1 response without a Content-Length header still gets the chunked encoding terminator. Responses with status 204 or 304 are also sent with their body.

Pipelined GET and HEAD requests keep the connection open even when keep-alive is disabled, which is the default. A client or proxy reading the connection takes the extra bytes as the start of the next response, which may desynchronize a proxy that shares the connection across clients.
Published: 2026-10-30
Score: n/a
EPSS: n/a
KEV: No
Impact: Response corruption leading to denial of service and potential information leakage
Action: Patch
AI Analysis

Impact

The vulnerability, classified as CWE‑444, occurs in the Starlet Perl library before version 0.33, which erroneously sends a response body for HEAD requests because the request method is not relayed to the response writer. Consequently, when a client issues a HEAD request a payload may be transmitted even though the HTTP specification mandates that a HEAD response must contain no body. In addition, responses with status codes that should have empty bodies (such as 204 or 304) still include data, further exacerbating the problem. If a response uses chunked transfer encoding, the terminating sequence is also transmitted, which can be interpreted by downstream clients as part of the following message. The result is that the next HTTP message on the same TCP connection begins with stray bytes, breaking the protocol parsing state machine of proxies, load balancers or clients that employ persistent or pipelined HTTP/1.1 connections.

Affected Systems

Any deployment that uses the Starlet library for Perl versions earlier than 0.33 is affected. This includes web applications that build on the Plack framework, particularly those that employ the Plack::Middleware::Head middleware, as well as any reverse‑proxy or other HTTP components that rely on Starlet’s request handling.

Risk and Exploitability

The vulnerability can be triggered by any attacker who can send HTTP requests to the server, making it feasible for malicious actors to exploit the issue over public or internal networks. Because the misbehaviour corrupts subsequent responses on the same connection, it can cause proxy or client misinterpretation, leading to denial of service or occasional data leakage from the body of a HEAD request. Although the EPSS score is currently not available and the issue is not listed in the CISA KEV catalog, its impact on HTTP flow integrity is significant, especially for services that maintain persistent or pipelined connections. The exploit is straightforward: deliver a crafted HEAD request to a vulnerable server and observe the corruption in the following response; the attacker does not need privileged access or prior exploitation of other components.

Generated by OpenCVE AI on October 30, 2026 at 14:58 UTC.

Remediation

Vendor Solution

Upgrade to Starlet 0.33 or later.


OpenCVE Recommended Actions

  • Upgrade Starlet to version 0.33 or later to eliminate the faulty HEAD handling
  • If an upgrade is not immediately possible, patch the request handling code to prevent any body from being sent for HEAD responses, ensuring these responses contain no content and correct transfer‑encoding headers
  • For an interim workaround, disable HTTP/1.1 persistent connections or pipelining on the server or reverse‑proxy, or configure the proxy to enforce Content‑Length or chunked‑encoding termination for all responses so that stray bytes do not propagate

Generated by OpenCVE AI on October 30, 2026 at 14:58 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 30 Oct 2026 15:00:00 +0000

Type Values Removed Values Added
First Time appeared Kazuho
Kazuho starlet
Vendors & Products Kazuho
Kazuho starlet

Fri, 30 Oct 2026 13:00:00 +0000

Type Values Removed Values Added
Description Starlet versions before 0.33 for Perl send a body in responses to HEAD requests, corrupting the next response on a persistent or pipelined connection. The request method is not passed to the response writer, so whatever body the application returns for a HEAD request is sent. With Plack::Middleware::Head the body is empty, but an HTTP/1.1 response without a Content-Length header still gets the chunked encoding terminator. Responses with status 204 or 304 are also sent with their body. Pipelined GET and HEAD requests keep the connection open even when keep-alive is disabled, which is the default. A client or proxy reading the connection takes the extra bytes as the start of the next response, which may desynchronize a proxy that shares the connection across clients.
Title Starlet versions before 0.33 for Perl send a body in responses to HEAD requests, corrupting the next response on a persistent or pipelined connection
Weaknesses CWE-444
References

cve-icon MITRE

Status: PUBLISHED

Assigner: CPANSec

Published:

Updated: 2026-10-30T12:46:11.352Z

Reserved: 2026-10-25T10:18:33.774Z

Link: CVE-2026-116127

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-30T13:18:31.180

Modified: 2026-10-30T13:18:31.180

Link: CVE-2026-116127

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-30T15:00:15Z

Weaknesses
  • CWE-444

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