Skip to main content

mtrudel Bandit CVE-2026-109584

| EUVDEUVD-2026-109826 HIGH
Improper Handling of Highly Compressed Data (Data Amplification) (CWE-409)
2026-10-26 EEF
8.7
CVSS 4.0 · Vendor: EEF
View

Attack ChainAIDerived

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

  1. Access
    Open HTTP/2 connection to default Bandit server
  2. Delivery
    Send 49KB HPACK block referencing one 4KB cookie ~45,000 times
  3. Exploit
    Bandit joins cookie crumbs into ~183MB binary
  4. Execution
    Repeat across concurrent streams
  5. Impact
    Exhaust 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.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

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

bandit 0.3.3 <1.14.0
bandit 44bf969cd59851622fb6ee4d16227fbc39a77fb4 <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 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

Vendor (EEF) PRIMARY 8.7 HIGH
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
vuln.today AI 7.5 HIGH

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.

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

Primary rating from Vendor (EEF).

CVSS VectorVendor: EEF

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

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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch (Bandit 1.14.0); interim mitigations include setting a finite max_header_list_size or disabling HTTP/2.

Threat Intelligence Overview

EPSS Score
0.6%
Top 51% exploitable
Prevalence
Low
Elixir/Erlang-only HTTP server, niche ecosystem despite Phoenix use
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 HIGH
CISA KEV No
Public POC No
EPSS 0.6%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

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

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