Skip to main content

Bandit CVE-2026-116078

| EUVDEUVD-2026-112087 HIGH
Allocation of Resources Without Limits or Throttling (CWE-770)
2026-10-28 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 Bandit
  2. Delivery
    Send POST HEADERS on up to 500 streams
  3. Exploit
    Stream request bodies as interleaved 1-byte DATA frames
  4. Execution
    Server accumulates one cons cell and binary per byte
  5. Persist
    Hold open reads to amplify memory 5-8x
  6. Impact
    Exhaust BEAM memory and degrade/deny service

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource allocation limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Two concrete preconditions must both hold: (1) HTTP/2 must be enabled on the Bandit listener (it is enabled by default; the documented workaround from 0.7.0 is http_2_options: [enabled: false]), and (2) the target route's Plug must actually read the request body - which any route behind Plug.Parsers does for POST, PUT, and PATCH. No authentication is required (CVSS PR:N) and no user interaction (UI:N). Limiting factors that reduce realistic impact: the attack only bites routes that read bodies, the memory overhead is an amplification ratio (~5-8x bytes sent) held only for the duration of each open read rather than an unbounded or permanent allocation, and it is bounded per connection by the 500-concurrent-stream cap, so sustained denial of service requires many concurrent streams and connections held open against the read_timeout deadline. The complete fix is upgrading to bandit 1.14.1; disabling HTTP/2 is the only stated workaround and removes HTTP/2 functionality.

Impact

This is a genuine but bounded availability risk, best read as 'patch this_week' rather than a drop-everything emergency. The supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) scores 8.7 (High) and is internally consistent with the description: an unauthenticated remote attacker over the network can trigger the flaw with low complexity and no user interaction, and the only impact metric set is VA:H (availability high), with VC:N/VI:N - no confidentiality or integrity loss, which matches a CWE-770 memory-exhaustion denial of service. No EPSS score, no CISA KEV listing, and no 'POC confirmed' flag are present in the input, so there is no signal of active exploitation; however, the GHSA advisory itself contains a detailed step-by-step reproduction, so a public PoC reference exists even though it is not verified as packaged working exploit code. The vuln.today Decision label is 'this_week,' consistent with a high-severity, network-reachable, unauthenticated DoS against which a patch already exists. The main factors moderating real-world urgency are deployment preconditions (HTTP/2 must be enabled and the route must read the request body) and the fact that the amplification is a ~5-8x memory multiplier bounded by the read deadline and the 500-streams-per-connection limit, i.e. resource pressure rather than a single-request crash. Missing data to note explicitly: EPSS is absent, so widespread-vs-targeted exploitation likelihood cannot be quantified; KEV is not listed; and no third party has independently confirmed exploitation.

Exploit ScenarioDerived

An unauthenticated attacker opens an HTTP/2 (h2c or TLS) connection to a Bandit server and sends POST requests on up to 100-500 concurrent streams, each carrying its request body as thousands of interleaved 1-byte DATA frames without END_STREAM. Because Bandit accumulates each frame as its own list cell plus heap binary and bounds reads only by byte count, the server holds roughly 5-8x the bytes sent in stream-process memory for the life of each open body read; repeating this across many connections drives the BEAM toward memory exhaustion. The GHSA advisory publishes a concrete reproduction (100 streams × 5,000 frames held 25-40 MiB for ~5 MB sent), so a public PoC reference exists, though it is not verified as a packaged working exploit.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

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

Alert me

AnalysisAIv1 – Oct 28, 2026

Bandit's HTTP/2 request body reader amplifies memory use, letting an unauthenticated remote client make a server hold roughly 5 to 8 times the body bytes it sends in stream process memory. Affected are versions from 0.3.1 before 1.14.1 on listeners where HTTP/2 is enabled and the route's Plug actually reads the request body, which includes anything behind Plug.Parsers for POST, PUT and PATCH. A public proof-of-concept reference exists; it is not verified as working exploit code, and no active exploitation has been confirmed. Vendor-released patch: 1.14.1.

RemediationAI

Upgrade bandit to 1.14.1, which contains the upstream fix commit 327bb02ff84171237e1aeff787930debd16155ee; the advisory is at https://github.com/mtrudel/bandit/security/advisories/GHSA-pxjf-g536-7r93 and OSV at https://osv.dev/vulnerability/EEF-CVE-2026-116078. If an immediate upgrade is not possible, the only stated workaround, available from 0.7.0, is to disable HTTP/2 with http_2_options: [enabled: false], so the vulnerable body reader never runs - with the trade-off that HTTP/2 functionality is removed for those clients. No other compensating control is documented; priority guidance is to patch this week rather than treat it as a drop-everything emergency, since the allocation is an amplification bounded by the 500-concurrent-stream cap and held only for the duration of each open body read.

Affected VersionsENISA

bandit 0.3.1 <1.14.1
bandit c8dc1e97050cf359f61ed6cdd110f3cdaf1d6f5f <327bb02ff84171237e1aeff787930debd16155ee

Affected Packages

euvd bandit fix: 1.14.1

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

Bandit is an Elixir HTTP server built directly on Thousand Island and Plug. In the HTTP/2 stream implementation, do_read_data/5 in lib/bandit/http2/stream.ex prepends each {:data, data, stream} payload received from the connection process onto an accumulator list and reverses it when the read returns, so every DATA frame occupies its own cons cell plus a heap binary until the read completes. The :length option of read_body/2 (default 8,000,000) is decremented by byte_size(data) and therefore bounds body bytes rather than frame count, so a body delivered as many 1-byte DATA frames pays a list cell and a binary term per byte while adding no meaningful read_timeout credit. Interleaving one frame per stream per round across up to 500 concurrent streams per connection keeps each stream consuming frames as they arrive and below the connection's 16-message buffering threshold, defeating per-stream buffering regardless of TCP segment size. The reporter measured 100 streams holding 25 to 40 MiB of stream process memory for about 5 MB sent, and a single stream holding 2 to 4 MiB for 58 KiB of body. The root cause class is CWE-770, allocation of resources without limits or throttling, giving a network-reachable, no-authentication, no-interaction availability impact (assessed 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

Remote, unauthenticated, no interaction against default HTTP/2 (AV:N/AC:L/PR:N/UI:N); only availability is affected (A:H, C:N/I:N) with no scope change (S:U).

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

Allocation of Resources Without Limits or Throttling vulnerability in the HTTP/2 request body reader of mtrudel bandit allows an unauthenticated remote attacker to exhaust server memory via a request body sent as many 1-byte DATA frames.

do_read_data/5 in lib/bandit/http2/stream.ex keeps every DATA frame payload as its own list element until the read returns. The :length option of read_body/2 counts body bytes, not frames, so a body of 1-byte frames costs a list cell and a binary term per byte. Interleaving the frames across up to 500 concurrent streams per connection keeps each stream consuming its frames as they arrive; in the reporter's test, 100 streams held 25 to 40 MiB of stream process memory for 5 MB sent. Only routes whose Plug reads the request body are affected, which includes any route behind Plug.Parsers.

This issue affects bandit: from 0.3.1 before 1.14.1.

Technical POC Analysis

CWE-770 (Allocation of Resources Without Limits or Throttling), implemented as a memory amplification in Bandit's HTTP/2 body reader.

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

A memory amplification flaw in Bandit's HTTP/2 request body reader allows unauthenticated remote clients to force servers to allocate 5-8 times the data sent, potentially causing memory exhaustion and service disruption. Organizations running affected Bandit versions (0.3.1 to 1.14.1) with HTTP/2 and Plug parsers are at risk, with business continuity implications for customer-facing and internal APIs. While no active exploitation has been confirmed, a public proof-of-concept reference exists, warranting immediate remediation to maintain service availability and protect reputation.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

Prevalence
Medium
default Phoenix HTTP server, but confined to the Elixir/Erlang ecosystem
Social Media
2
Sightings
Data Quality
4 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 N/A
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· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

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

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

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-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

CVE-2026-109584 HIGH
8.7 Oct 26

Unauthenticated remote attackers can exhaust BEAM node memory on default-configured mtrudel Bandit HTTP/2 servers (0.3.3

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