Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessOpen HTTP/2 connection to default Bandit server
-
DeliverySend 49KB HPACK block referencing one 4KB cookie ~45,000 times
-
ExploitBandit joins cookie crumbs into ~183MB binary
-
ExecutionRepeat across concurrent streams
-
ImpactExhaust BEAM node memory, crash all apps
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V2 - Validation and Business Logic Compression ratio limits
|
| Exploitation Conditions | Exploitation requires that the target have HTTP/2 enabled (the default) and retain the shipped defaults where max_header_list_size is :infinity, so Bandit.HTTP2.Connection never rejects the decoded header list; max_concurrent_streams also defaults to :infinity, amplifying impact across streams. No authentication or user interaction is needed (PR:N/UI:N), and default configurations of mtrudel bandit versions 0.3.3 through before 1.14.0 are exploitable remotely. Limiting factors stated by the vendor: on 1.12.2 and later, setting a finite decoded header list limit (e.g. http_2_options: [default_local_settings: [max_header_list_size: 65_536]]) resets the stream before the cookie crumbs are joined; on any version, disabling HTTP/2 (http_2_options: [enabled: false]) removes the vulnerable path. The vendor indicates upgrading to 1.14.0 is the complete fix. |
| Impact | All signals point to a genuine availability risk rather than CVSS inflation. The vendor-supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H) describes remote, network-reachable exploitation with low complexity, no attack requirements, no privileges and no user interaction, impacting only availability - consistent with the CWE-409 data-amplification mechanism and the described memory exhaustion. The provided 8.7 score is therefore driven purely by the VA:H availability impact against an unauthenticated remote path, which is credible. EPSS is not provided in the input, and the vulnerability is NOT on CISA KEV, so there is no evidence of active exploitation - the distribution here is vulnerable to targeted abuse rather than confirmed widespread attack. A detailed public PoC methodology is published in the GHSA advisory (block construction, frame sequencing, and a reproduced 49 KB → 183 MB amplification), but the input does not mark it as confirmed working exploit code. The vendor-assigned priority is 'this_week', which is the governing urgency signal and aligns with a serious-but-not-emergency DoS. One nuance to verify: the NVD/description says the flaw affects 'default settings', while the advisory simultaneously documents a configuration (finite max_header_list_size on 1.12.2+) that neutralizes it - so real-world exposure depends on whether operators have left max_header_list_size at its :infinity default, which is the shipped default. |
| Exploit ScenarioDerived | An unauthenticated remote attacker opens an HTTP/2 connection to a default-configured Bandit server and sends a ~49 KB HPACK HEADERS/CONTINUATION block that stores one 4,058-byte cookie in the dynamic table and references it ~45,000 times with 1-byte indexed fields. Bandit's combine_cookie_crumbs/1 joins the crumbs into a ~183 MB binary before any application code runs, and because max_concurrent_streams also defaults to :infinity, repeating this across streams exhausts the BEAM node's memory and takes down every application on it. A detailed public PoC reference exists in the GHSA advisory; it is not verified as working exploit code in the provided input. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 26, 2026
Unauthenticated remote attackers can exhaust BEAM node memory on default-configured mtrudel Bandit HTTP/2 servers (0.3.3 before 1.14.0) by sending a small HPACK HEADERS block that expands into a huge joined cookie value before any plug code executes. Concurrent streams multiply the allocation, and the vendor advisory includes a public proof-of-concept description; it is not verified as working exploit code. Bandit 1.14.0 is the vendor-released fix, while setting a finite max_header_list_size or disabling HTTP/2 removes the vulnerable path.
RemediationAI
Upgrade to Bandit 1.14.0, which the vendor identifies as the complete fix (vendor-released patch: 1.14.0); advisory: https://github.com/mtrudel/bandit/security/advisories/GHSA-7gfj-7gvq-3xqj and patch commit https://github.com/mtrudel/bandit/commit/220b9dfd27f9a21305be2afc75cbe585ddc24e7a . If immediate upgrade is not possible, on 1.12.2 and later set a finite decoded header list limit, for example http_2_options: [default_local_settings: [max_header_list_size: 65_536]], which resets the stream before cookie crumbs are joined; on any version, disable HTTP/2 with http_2_options: [enabled: false], removing the vulnerable path but disabling HTTP/2 features. The vendor indicates upgrading to 1.14.0 is the complete fix.
Affected VersionsENISA
Affected Packages
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 issue is in Bandit's HTTP/2 stack, specifically HPACK decoding and cookie handling. max_header_block_size limits only the compressed HEADERS/CONTINUATION block; after HPAX.decode returns a list of references to a 4,058-byte cookie stored in the 4,096-byte HPACK dynamic table, Bandit.HTTP2.Connection compares decoded header_list_size against local_settings.max_header_list_size, which defaults to :infinity. Because Erlang term order sorts integers below atoms, that guard never rejects the list unless an operator sets a finite limit. combine_cookie_crumbs/1 in lib/bandit/http2/stream.ex then uses Enum.map_join/3 to join every cookie crumb into one binary, so a roughly 49 KB block produced about 183 MB in the reporter's run; max_concurrent_streams also defaults to :infinity. This maps to CWE-409, improper handling of highly compressed data/data amplification, and the assessed impact is availability-only (CVSS:3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H).
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
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Unauthenticated remote, low-complexity amplification with no user interaction (AV:N/AC:L/PR:N/UI:N); impact is availability-only (A:H), with no confidentiality or integrity effect.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
Improper Handling of Highly Compressed Data (Data Amplification) vulnerability in the HTTP/2 implementation of mtrudel bandit allows an unauthenticated remote attacker to exhaust server memory via a small HPACK-compressed HEADERS block. The block stores one large cookie value in the HPACK dynamic table and then references it tens of thousands of times with 1-byte indexed fields. In the reporter's run, a 49 KB block made a server with default settings allocate a 183 MB cookie binary before any application code ran, and every concurrent stream can repeat the cost.
Bandit.HTTP2.Connection caps only the compressed block (max_header_block_size), and its check of the decoded list against max_header_list_size never fires because that setting defaults to :infinity. combine_cookie_crumbs/1 in lib/bandit/http2/stream.ex then joins every crumb into one binary.
This issue affects bandit: from 0.3.3 before 1.14.0.
Technical POC Analysis
CWE-409, Improper Handling of Highly Compressed Data (Data Amplification), in mtrudel Bandit's HTTP/2 stack - an Elixir/Erlang library running on the BEAM.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
CVE-2026-109584 exposes businesses running mtrudel Bandit HTTP/2 servers to memory exhaustion that can crash or degrade production web services before any application code executes, directly impacting customer-facing availability and uptime SLAs. Because exploitation requires no authentication and minimal attacker effort, any internet-facing Bandit deployment is at risk and leadership should prioritize remediation to prevent service disruptions and potential brand and financial damage.
Apply vendor patch (Bandit 1.14.0); interim mitigations include setting a finite max_header_list_size or disabling HTTP/2.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Memory exhaustion in Bandit WebSocket server (versions 0.5.0 through 1.10.x) allows unauthenticated remote attackers to
Memory exhaustion in Bandit WebSocket server (versions 0.5.9 through 1.10.x) allows unauthenticated remote attackers to
Denial of service in mtrudel bandit via HTTP/2 frame deserialization allows unauthenticated remote attackers to exhaust
Transport-state spoofing in Bandit 1.0.0 through 1.10.x allows unauthenticated remote attackers to forge HTTPS connectio
HTTP request smuggling in mtrudel bandit before version 1.11.0 allows unauthenticated attackers to bypass edge security
Uncontrolled HTTP/2 flow-control resource consumption in mtrudel/bandit 1.4.0 and later lets an unauthenticated remote p
Unauthenticated remote denial of service in mtrudel Bandit (Elixir HTTP server) versions 1.6.1 through 1.11.0 lets any c
CPU exhaustion in bandit 1.11.0 to 1.12.0 allows unauthenticated remote denial-of-service via WebSocket fragment reassem
Unauthenticated remote denial of service in Bandit (the Elixir HTTP/1 web server for Phoenix/Plug applications) versions
Bandit's HTTP/2 request body reader amplifies memory use, letting an unauthenticated remote client make a server hold ro
Unauthenticated remote CPU exhaustion in mtrudel Bandit's HTTP/2 server (versions before 1.14.0) is achievable by holdin
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
EUVD-2026-109826
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB