CVE-2026-114216
Chunk extensions accept bare LF and CR, enabling request smuggling in Bandit
CVE-2026-114216 is a medium vulnerability (CVSS 6.3) in Mtrudel Bandit, published October 26, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.60%, the 49th percentile. Fixed in bandit 1.14.0.
- Severity
- 6.3 MediumCVSS 4.0, CVE List
- Exploit chance
- 0.60%EPSS, 49th percentile
- Exploitation
- None knownNot on CISA’s or ENISA’s lists
- Fixed in
1.14.0bandit +7 more
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.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- Low
- Availability
- None
Exploit likelihood
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
banditHex | 1.12.4 up to 1.14.0, plus listed versions 1.12.51.13.01.13.1 | 1.14.0 |
banditUbuntu:16.04:LTS | All versions, plus listed versions 0.13.2-10.13.2-3 | None known |
banditUbuntu:18.04:LTS | All versions, plus listed versions 1.4.0-0ubuntu2 | None known |
banditUbuntu:20.04:LTS | All versions, plus listed versions 1.5.1-31.6.2-1 | None known |
banditUbuntu:22.04:LTS | All versions, plus listed versions 1.6.2-1 | None known |
banditUbuntu:24.04:LTS | All versions, plus listed versions 1.6.2-3 | None known |
banditUbuntu:26.10 | All versions, plus listed versions 1.7.10-31.9.4-1 | None known |
banditUbuntu:26.04:LTS | All versions, plus listed versions 1.7.10-21.7.10-3 | None known |
What each source reports
CVE List Score used 6.3
Chunk extensions accept bare LF and CR, enabling request smuggling in Bandit
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.
- Record
CVE-2026-114216- CVSS 4.0
- 6.3 Medium
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 - Weakness
- CWE-444
- Updated
- 2026-11-02
EUVDEUVD-2026-109820 6.3
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.
- Record
EUVD-2026-109820- CVSS 4.0
- 6.3 Medium
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 - Updated
- 2026-11-02
NVD 6.3
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.
- Record
CVE-2026-114216- CVSS 4.0
- 6.3 Medium
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Weakness
- CWE-444
- Updated
- 2026-11-02
OSV 6.3
Chunk extensions accept bare LF and CR, enabling request smuggling in Bandit
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.
- Record
CVE-2026-114216- CVSS 4.0
- 6.3 Medium
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 - Weakness
- CWE-444
- Updated
- 2026-11-02
OSVEEF-CVE-2026-114216 6.3
Chunk extensions accept bare LF and CR, enabling request smuggling in Bandit
Summary
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.
Details
1. Unchecked extension. In lib/bandit/http1/socket.ex, the chunked body reader takes the chunk-size line to be everything up to the first CRLF. Anything after ; is thrown away without being checked against the RFC 9112 §7.1.1 chunk-ext grammar, so bare LF, bare CR and other control bytes are accepted. The 16-byte size-line cap does not help, because the payload needs only 5 bytes.
2. Bandit's reading. For the body 2;\nxx\r\n40\r\n0\r\n\r\nGET /admin ..., Bandit takes 2;\nxx as the size line and 40 as the 2-byte chunk, and the embedded 0\r\n\r\n ends the body. Bandit then runs GET /admin as a second pipelined request.
3. The proxy's reading. A proxy that ends the size line at the bare LF sees only one POST, with the chunk xx and a 0x40-byte chunk that holds the GET /admin bytes.
Proof of concept
- Run Bandit with a Plug that reads the body and records each request's method and path.
- On one connection, send
POST /publicwithTransfer-Encoding: chunkedand the body2;\nxx\r\n40\r\n0\r\n\r\n, followed directly byGET /admin HTTP/1.1withContent-Length: 7and the body\r\n0\r\n\r\n. - Bandit dispatches both
POST /publicwith the body40andGET /admin. A proxy that ends lines at a bare LF would have forwarded the same bytes as the singlePOST /public.
Impact
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.
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.
- Record
EEF-CVE-2026-114216- CVSS 4.0
- 6.3 Medium
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 - Weakness
- CWE-444
- Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-114216 6.3
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.
- Record
UBUNTU-CVE-2026-114216- CVSS 4.0
- 6.3 Medium
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 - Updated
- 2026-11-02
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
References
github.com/mtrudel/bandit/security/advisories/GHSA-w5wc-g2hc-g7m2
cna.erlef.org/cves/CVE-2026-114216.html
osv.dev/vulnerability/EEF-CVE-2026-114216
github.com/mtrudel/bandit/commit/c31e9e3c76dcbfc239a96eabed5341ced7885ae5
github.com/mtrudel/bandit/commit/220b9dfd27f9a21305be2afc75cbe585ddc24e7a
github.com
Show 12 moreShow less
repo.hex.pm
github.com/CVEProject/cvelistV5/tree/main/cves/2026/114xxx/CVE-2026-114216.json
nvd.nist.gov/vuln/detail/CVE-2026-114216
github.com/mtrudel/bandit
hex.pm/packages/bandit
ubuntu.com/security/CVE-2026-114216
cve.org/CVERecord?id=CVE-2026-114216
cna.erlef.org/cves/cve-2026-114216.html
github.com/mtrudel/bandit/security/advisories/ghsa-w5wc-g2hc-g7m2
github.com/cveproject/cvelistv5/tree/main/cves/2026/114xxx/cve-2026-114216.json
nvd.nist.gov/vuln/detail/cve-2026-114216
osv.dev/vulnerability/eef-cve-2026-114216