CVE-2026-114216

Chunk extensions accept bare LF and CR, enabling request smuggling in Bandit

Published Oct 26, 2026 CVSS 4.0 · 6.3 Medium EPSS < 1% KEV · Not listed
Description
Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling') vulnerability in the HTTP/1.1 chunked body reader of mtrudel bandit allows an unauthenticated remote attacker to smuggle a second request past a front-end proxy via a chunk extension that contains a bare LF.

The chunked reader in lib/bandit/http1/socket.ex takes the chunk-size line to be everything up to the first CRLF and discards everything after ; without checking it against the RFC 9112 chunk-ext grammar, so bare LF, bare CR and other control bytes pass. A proxy that ends the size line at a bare LF reads 2;\nxx\r\n40\r\n... as one request whose second chunk holds a GET /admin, while Bandit ends the body early and dispatches GET /admin as a separate pipelined request. Deployments without such a proxy in front of Bandit are not affected.

This issue affects bandit: from 1.12.4 before 1.14.0.

Analysis

AI-generated

Technical impact

In Bandit’s HTTP/1.1 chunked body reader, the size line is parsed up to the first CRLF; everything after a semicolon is discarded without checking against the RFC 9112 chunk‑extension grammar, which allows a bare line feed or carriage return to be embedded in the extension. This oversight lets an attacker craft a request that a front‑end proxy interprets as a single request while Bandit perceives it as two separate pipelined requests, effectively smuggling a second request past the proxy. The vulnerability is unauthenticated and requires no special privileges; it can enable a remote attacker to inject requests such as GET /admin into the application.

Affected Systems

Affected deployments are those running Bandit versions 1.12.4 through 1.13.x inclusive; any instance with a front‑end proxy that forwards HTTP/1.1 chunked requests is vulnerable. Versions prior to 1.12.4 or 1.14.0 and later are not impacted. Configurations that circumvent HTTP/1.1 or do not expose Bandit behind a proxy that parses chunked bodies are safe.

Risk and Exploitability

The CVSS score of 6.3 indicates a moderate severity. EPSS is not available, so the current likelihood of exploitation cannot be quantified. The vulnerability is not listed in the CISA KEV catalog. The attack vector is exploitation of the HTTP/1.1 protocol by manipulating chunk extensions; the exploit requires a suitable proxy that does not strictly validate chunk extensions, and the attacker can remotely smuggle arbitrary requests without authentication. No local code execution or privilege escalation is required.

Remediation

Vendor Workaround

Where the front-end proxy can reach Bandit over HTTP/2, disable HTTP/1 with http_1_options: [enabled: false], so that the chunked body reader never runs.


OpenCVE Recommended Actions

  • Upgrade Bandit to version 1.14.0 or later, which contains a fixed chunked body reader implementation.
  • If an upgrade cannot be performed immediately, configure the front‑end proxy to operate only over HTTP/2 and disable HTTP/1 support with http_1_options: [enabled: false] so that Bandit never receives a chunked request.
  • Ensure the proxy rejects or sanitizes any HTTP/1.1 chunk extensions containing unprintable control characters, preventing malformed chunks from reaching Bandit.

Generated by OpenCVE AI on October 26, 2026 at 15:52 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories available
History
Type Values Removed Values Added
Metrics ssvc

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

Type Values Removed Values Added
Description Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling') vulnerability in the HTTP/1.1 chunked body reader of mtrudel bandit allows an unauthenticated remote attacker to smuggle a second request past a front-end proxy via a chunk extension that contains a bare LF. The chunked reader in lib/bandit/http1/socket.ex takes the chunk-size line to be everything up to the first CRLF and discards everything after ; without checking it against the RFC 9112 chunk-ext grammar, so bare LF, bare CR and other control bytes pass. A proxy that ends the size line at a bare LF reads 2;\nxx\r\n40\r\n... as one request whose second chunk holds a GET /admin, while Bandit ends the body early and dispatches GET /admin as a separate pipelined request. Deployments without such a proxy in front of Bandit are not affected. This issue affects bandit: from 1.12.4 before 1.14.0.
Title Chunk extensions accept bare LF and CR, enabling request smuggling in Bandit
First Time appeared Mtrudel
Mtrudel bandit
Weaknesses CWE-444
CPEs cpe:2.3:a:mtrudel:bandit:*:*:*:*:*:*:*:*
Vendors & Products Mtrudel
Mtrudel bandit
References
Metrics cvssV4_0

{'score': 6.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:N'}

Weaknesses
  • CWE-444

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

Sources

Status
PUBLISHED
Assigner
EEF
Published
Updated
Oct 26, 2026, 3:35 PM
Reserved
Oct 23, 2026, 10:45 AM
Status
Awaiting Analysis
Published
Oct 26, 2026, 2:16 PM
Modified
Oct 26, 2026, 4:59 PM