CVE-2026-115877

Twisted: HTTP Request Smuggling in twisted.web via a Bare CR or LF in a Header Value

Published Oct 23, 2026 CVSS 3.1 · 5.4 Medium EPSS < 1% KEV · Not listed
Description
Twisted is an event-based framework for internet applications, supporting Python 3.6+. Prior to 26.10.0rc1, twisted.web.http.HTTPChannel.headerReceived rejects a NUL byte in an HTTP header value but accepts a bare carriage return or bare line feed. Because Twisted splits header lines only on CRLF, a hidden Content-Length header can remain folded into another value while a lenient front end treats the bare character as a line terminator. The resulting framing disagreement can smuggle a following request past front-end access controls, poison a shared connection or cache, and expose a later client to the wrong response. This issue is an incomplete-fix residual of earlier Twisted request-smuggling protections. This issue is fixed in version 26.10.0rc1.

Analysis

AI-generated

Technical impact

Twisted’s HTTPChannel rejects NUL bytes but accepts bare carriage returns or line feeds in header values. Because header lines are split only on CRLF, an attacker can insert a bare CR or LF to cause a lenient front‑end to treat the character as a line terminator. This creates a hidden header line folded into another header while the following request is injected, producing a framing mismatch that smuggles a request past front‑end access controls, poisons a shared connection or cache, and exposes later clients to unintended responses.

Affected Systems

Twisted framework (twisted:twisted) versions prior to 26.10.0rc1 are affected. The vulnerability is fixed in version 26.10.0rc1 and all subsequent releases.

Risk and Exploitability

The CVSS score of 5.4 indicates moderate severity. No EPSS score is available, and the issue is not listed in CISA KEV. Exploitation requires a crafted HTTP request that passes through a front‑end that accepts bare CR or LF characters, making the likely attack vector network‑based. An attacker could inject requests that bypass access controls or corrupt a cache, potentially leading to unauthorized request execution or information disclosure to later clients.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade to Twisted 26.10.0rc1 or later to enforce strict CRLF header termination.
  • If an immediate upgrade is not possible, reconfigure any front‑end proxy or load balancer to reject headers containing bare carriage return or line feed characters.
  • Monitor Twisted server traffic and logs for anomalous header patterns or repeated unexpected request injections, and block suspicious IPs or request patterns accordingly.

Generated by OpenCVE AI on October 23, 2026 at 21:50 UTC.

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Github GHSA Github GHSA GHSA-q7qq-6mhp-9rc4 Twisted: HTTP Request Smuggling in twisted.web via a Bare CR or LF in a Header Value
History
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
First Time appeared Twisted
Twisted twisted
Vendors & Products Twisted
Twisted twisted
Type Values Removed Values Added
Description Twisted is an event-based framework for internet applications, supporting Python 3.6+. Prior to 26.10.0rc1, twisted.web.http.HTTPChannel.headerReceived rejects a NUL byte in an HTTP header value but accepts a bare carriage return or bare line feed. Because Twisted splits header lines only on CRLF, a hidden Content-Length header can remain folded into another value while a lenient front end treats the bare character as a line terminator. The resulting framing disagreement can smuggle a following request past front-end access controls, poison a shared connection or cache, and expose a later client to the wrong response. This issue is an incomplete-fix residual of earlier Twisted request-smuggling protections. This issue is fixed in version 26.10.0rc1.
Title Twisted: HTTP Request Smuggling in twisted.web via a Bare CR or LF in a Header Value
Weaknesses CWE-444
References
Metrics cvssV3_1

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

Weaknesses
  • CWE-444

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

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Oct 29, 2026, 2:23 PM
Reserved
Oct 23, 2026, 7:37 PM
Status
Awaiting Analysis
Published
Oct 23, 2026, 9:17 PM
Modified
Oct 29, 2026, 3:17 PM
Severity
Moderate
Public date
Oct 23, 2026, 8:25 PM