CVE-2026-114216 PUBLISHED

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

Assigner: EEF
Reserved: 23.10.2026 Published: 26.10.2026 Updated: 26.10.2026

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.

Metrics

CVSS 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
CVSS Score: 6.3

Product Status

Vendor mtrudel
Product bandit
Versions Default: unaffected
  • affected from 1.12.4 to 1.14.0 (excl.)
Vendor mtrudel
Product bandit
Versions Default: unaffected
  • affected from c31e9e3c76dcbfc239a96eabed5341ced7885ae5 to 220b9dfd27f9a21305be2afc75cbe585ddc24e7a (excl.)

Workarounds

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.

Credits

  • Peter Ullrich reporter
  • Mat Trudel remediation developer
  • Jonatan Männchen / EEF analyst

References

Problem Types

  • CWE-444 Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling') CWE

Impacts

  • Behind a front-end proxy that treats a bare LF as a line ending and forwards chunked bodies unchanged, an unauthenticated attacker can have Bandit run requests the proxy never saw, getting past the proxy's access controls.