Skip to main content

Bandit CVE-2026-114216

| EUVDEUVD-2026-109820 MEDIUM
HTTP Request/Response Smuggling (CWE-444)
2026-10-26 EEF
6.3
CVSS 4.0 · Vendor: EEF
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Craft chunked POST with bare-LF chunk extension
  2. Delivery
    Send through front-end proxy to Bandit
  3. Exploit
    Proxy and Bandit disagree on body boundaries
  4. Execution
    Bandit dispatches embedded request (GET /admin)
  5. Impact
    Bypass proxy access controls to protected endpoint

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V4 - API and Web Service HTTP request consistency
Exploitation Conditions

Exploitation requires Bandit versions 1.12.4 up to (but not including) 1.14.0 with HTTP/1.1 enabled (the default), AND - critically - a front-end proxy deployed ahead of Bandit that treats a bare LF as a line terminator inside the chunk-size line and forwards chunked request bodies unchanged. This proxy behavior is the AT:P attack requirement and is outside the attacker's control; the advisory states deployments without such a proxy are not affected. No authentication is required (PR:N) and no user interaction is needed. The vendor workaround, where the proxy can reach Bandit over HTTP/2, is to disable HTTP/1 with http_1_options: [enabled: false] so the chunked body reader never runs; otherwise upgrading to 1.14.0 is the fix.

Impact

This is a medium-severity request-smuggling flaw (CWE-444) with a CVSS 4.0 base score of 6.3. The signals are internally consistent and point to a real but conditional risk rather than a blanket emergency. The vector (AV:N/AC:L/AT:P/PR:N/UI:N) describes a network-reachable, unauthenticated attack, but the AT:P 'attack requirement' is the decisive qualifier: exploitation only works when Bandit sits behind a specific kind of front-end proxy that treats a bare LF as a line terminator and forwards chunked bodies unchanged - the advisory explicitly states deployments without such a proxy are not affected. No EPSS score and no CISA KEV entry were provided, so there is no evidence of active or widespread exploitation; the vuln.today decision label is 'this_month' (not act_now or emergency), matching a patch-promptly-but-not-drop-everything posture. A detailed proof-of-concept walkthrough is published in the GHSA advisory, and the introducing/fix commits are public, so the mechanism is fully disclosed. Net: a genuine patch-this-month item for Elixir/Erlang shops running Bandit behind a non-conforming proxy, not a high-CVSS-but-illusory issue, but also not a default-configuration internet-wide threat because of the proxy dependency.

Exploit ScenarioDerived

An unauthenticated remote attacker sends a single POST with Transfer-Encoding: chunked whose chunk-size line carries a chunk extension containing a bare LF (e.g. 2;\nxx\r\n40\r\n0\r\n\r\n followed by a smuggled GET /admin). A front-end proxy that ends the size line at the bare LF sees one benign POST, while Bandit ends the body early and dispatches the embedded GET /admin as a separate pipelined request, slipping past the proxy's access controls. A step-by-step public PoC is described in the GHSA advisory, though it is not packaged as a standalone weaponized exploit tool.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.6% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 26, 2026

HTTP request smuggling in the Elixir Bandit web server (1.12.4 up to but not including 1.14.0) lets an unauthenticated remote attacker slip a second request past a front-end proxy by embedding a bare LF in a chunk extension. Because Bandit's HTTP/1.1 chunked reader treats the chunk-size line as everything up to the first CRLF and discards anything after ';' without validating it against the RFC 9112 chunk-ext grammar, Bandit can end a body early and dispatch a trailing 'GET /admin' as its own pipelined request, while a proxy that terminates the size line at the bare LF forwards the same bytes as a single POST. Impact is bounded by a hard precondition: there must be a front-end proxy that treats a bare LF as a line ending and forwards chunked bodies unchanged (the AT:P requirement, outside attacker control) - deployments without such a proxy are not affected. Severity is medium (CVSS 4.0 base 6.3; independently assessed as CVSS 3.1 AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:L/A:N), no CISA KEV entry exists, and the vendor advisory describes a proof-of-concept procedure that is not confirmed as publicly available working exploit code.

RemediationAI

Vendor-released patch: Bandit 1.14.0. Upgrade from any 1.12.4-through-1.13.x release to 1.14.0, which is the fix commit 220b9dfd27f9a21305be2afc75cbe585ddc24e7a (see also the introducing commit c31e9e3c76dcbfc239a96eabed5341ced7885ae5 and advisory https://github.com/mtrudel/bandit/security/advisories/GHSA-w5wc-g2hc-g7m2); the patch splits the chunk-size line at ';' and strictly hex-parses the size, rejecting any trailing bytes, and the advisory notes that once patched, bandit will reject these chunk-ext lines in strict mode rather than ignore them. Where upgrading is not immediately possible and the front-end proxy can reach Bandit over HTTP/2, the vendor workaround is to disable HTTP/1 with http_1_options: [enabled: false] so the chunked body reader never runs - the trade-off is that all HTTP/1.1 clients, including any that cannot negotiate HTTP/2, lose access. Environments with no front-end proxy in front of Bandit are documented as unaffected, so inventory the proxy tier first: a proxy that does not split on bare LF, or that re-encodes chunked bodies, removes the precondition entirely.

Affected VersionsENISA

bandit 1.12.4 <1.14.0
bandit c31e9e3c76dcbfc239a96eabed5341ced7885ae5 <220b9dfd27f9a21305be2afc75cbe585ddc24e7a

Affected Packages

euvd bandit fix: 1.14.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The flaw is CWE-444 (Inconsistent Interpretation of HTTP Requests) in Bandit's HTTP/1.1 chunked body reader, lib/bandit/http1/socket.ex. Under RFC 9112 §7.1.1 a chunk-size line is chunk-size [ chunk-ext ] CRLF, where chunk-ext has a defined token/name-value grammar. Bandit instead matched <<chunk_size::binary-size(chunk_size_size), "\r\n", rest::binary>>, i.e. it took the size line to be everything up to the first CRLF and threw away everything after ';' with no grammar check, so bare LF, bare CR and other control bytes were accepted inside the extension. The 16-byte size-line cap offers no protection because the payload only needs 5 bytes. For the body 2;\nxx\r\n40\r\n0\r\n\r\nGET /admin ..., Bandit reads 2;\nxx as the size line, treats 40 as the 2-byte chunk, and the embedded 0\r\n\r\n terminates the body, after which it dispatches GET /admin as a second pipelined request; a proxy that ends the size line at the bare LF sees one POST with a 0x40-byte chunk containing the GET /admin bytes. This parsing divergence between two HTTP implementations is the classic desynchronization primitive used to bypass proxy-side access controls. The upstream fix splits the size line at ';' and strictly parses the size with Integer.parse/2, raising a request error on any trailing garbage.

Know when Bandit gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (EEF) PRIMARY 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
vuln.today AI 4.0 MEDIUM

Remote and unauthenticated, but exploitation depends on a specific front-end proxy that treats bare LF as a line terminator (modeled as AC:H in 3.1); impact is integrity via access-control bypass crossing the proxy boundary (S:C, I:L, no confidentiality/availability impact).

3.1 AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:L/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (EEF).

CVSS VectorVendor: EEF

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
None

DescriptionCVE.org

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.

Threat Intelligence Overview

EPSS Score
0.6%
Top 51% exploitable
Prevalence
Low
Elixir/Erlang Plug web server; niche language ecosystem, limited production footprint
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.6%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

33
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

HTTP request smuggling exploits inconsistencies in how front-end and back-end servers parse HTTP message boundaries.

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Bandit

View all
CVE-2026-42786 HIGH POC
8.7 May 01

Memory exhaustion in Bandit WebSocket server (versions 0.5.0 through 1.10.x) allows unauthenticated remote attackers to

CVE-2026-39804 HIGH POC
8.2 May 01

Memory exhaustion in Bandit WebSocket server (versions 0.5.9 through 1.10.x) allows unauthenticated remote attackers to

CVE-2026-42788 MEDIUM POC
6.9 May 01

Denial of service in mtrudel bandit via HTTP/2 frame deserialization allows unauthenticated remote attackers to exhaust

CVE-2026-39807 MEDIUM POC
6.3 May 01

Transport-state spoofing in Bandit 1.0.0 through 1.10.x allows unauthenticated remote attackers to forge HTTPS connectio

CVE-2026-39805 MEDIUM POC
6.3 May 01

HTTP request smuggling in mtrudel bandit before version 1.11.0 allows unauthenticated attackers to bypass edge security

CVE-2026-105659 HIGH
8.7 Oct 14

Uncontrolled HTTP/2 flow-control resource consumption in mtrudel/bandit 1.4.0 and later lets an unauthenticated remote p

CVE-2026-39806 HIGH
8.7 May 13

Unauthenticated remote denial of service in mtrudel Bandit (Elixir HTTP server) versions 1.6.1 through 1.11.0 lets any c

CVE-2026-65623 HIGH
8.7 Jul 24

CPU exhaustion in bandit 1.11.0 to 1.12.0 allows unauthenticated remote denial-of-service via WebSocket fragment reassem

CVE-2026-39803 HIGH
8.7 May 13

Unauthenticated remote denial of service in Bandit (the Elixir HTTP/1 web server for Phoenix/Plug applications) versions

CVE-2026-116078 HIGH
8.7 Oct 28

Bandit's HTTP/2 request body reader amplifies memory use, letting an unauthenticated remote client make a server hold ro

CVE-2026-108529 HIGH
8.7 Oct 26

Unauthenticated remote CPU exhaustion in mtrudel Bandit's HTTP/2 server (versions before 1.14.0) is achievable by holdin

CVE-2026-110499 HIGH
8.7 Oct 26

Unbounded per-connection memory and CPU growth in the Elixir Bandit HTTP/2 server (0.3.6 up to 1.14.0) lets an unauthent

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy