Skip to main content

Bandit EUVDEUVD-2026-109821

| CVE-2026-114213 HIGH
Allocation of Resources Without Limits or Throttling (CWE-770)
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 WebSocket upgrade to Bandit server
  2. Delivery
    Send non-final frame plus many 1-byte continuation frames
  3. Exploit
    Interleave Ping frames to defeat idle timeout
  4. Execution
    Amplify ~150x into BEAM memory
  5. Impact
    Exhaust server memory (DoS)

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

Requires only that the Bandit server (versions 1.11.0 up to but not including 1.14.0) accepts WebSocket upgrades, which is the default behavior for Phoenix LiveView and Phoenix Channels applications - no authentication (PR:N), no user interaction, and no non-default configuration are needed to trigger it. The specific prerequisite is a reachable WebSocket endpoint that completes the upgrade; the flaw lives in Bandit.WebSocket.Connection, where max_fragmented_message_size is checked only against accumulated payload bytes while each non-final continuation frame is stored as a separate list cell with no cap on fragment count. The main limiting factor is that the attacker must be able to establish WebSocket connections; the vendor workaround of lowering websocket_options: [max_fragmented_message_size: ...] (e.g. to 65_536) reduces the ceiling but does not eliminate the ~150x per-connection amplification, so upgrading to 1.14.0 is the complete fix.

Impact

This is a genuine availability risk but not a drop-everything emergency. The supplied CVSS 4.0 vector (CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H) is internally consistent with the mechanism: an unauthenticated, network-reachable attacker with low complexity and no user interaction can exhaust server memory, with impact confined to availability (VC:N/VI:N - no data confidentiality or integrity loss). The vuln.today priority is 'this_week' rather than act_now/emergency, which aligns with a resource-exhaustion DoS that has a vendor patch available. No EPSS score was provided and the CVE is not listed in CISA KEV, so there is no evidence of active exploitation - this is a severity signal (high availability impact, easy to trigger) rather than a confirmed in-the-wild threat. A detailed step-by-step proof-of-concept is published inside the GHSA advisory itself, which materially lowers the barrier to weaponization even though no packaged exploit tool is referenced. Net: a real and easy-to-exploit single-connection memory-amplification DoS (roughly 150x the configured fragment limit, ~1.2-1.4 GB per connection at the 8 MB default) affecting default configurations, warranting prompt patching, but the scope is limited to availability and there is no confidentiality/integrity exposure.

Exploit ScenarioDerived

An unauthenticated attacker opens a single WebSocket connection to any Bandit server that accepts upgrades (including Phoenix LiveView/Channels apps on default settings), sends a non-final frame followed by hundreds of thousands of 1-byte continuation frames, and interleaves Ping frames to defeat the idle timeout. Because each tiny fragment costs ~7 bytes on the wire but ~150-170 bytes of BEAM memory, a few megabytes of traffic inflates to tens or hundreds of megabytes of server memory, and sustained or parallel connections drive the node toward memory exhaustion. The GHSA advisory publishes a concrete PoC (500,000 fragments / 3.5 MB of traffic yielding ~82 MB of growth); it is a reproduction recipe and is not verified as packaged working exploit code.

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

Memory exhaustion in the Erlang/Elixir Bandit web server (mtrudel/bandit 1.11.0 up to but not including 1.14.0) lets an unauthenticated remote client drive a single WebSocket connection to roughly 150 times the configured max_fragmented_message_size, about 1.2-1.4 GB at the 8 MB default. Bandit counts only payload bytes against the fragment limit while storing every non-final 1-byte continuation frame as its own list cell costing about 150-170 bytes of BEAM heap, and ping frames injected between fragments keep the connection alive past the idle timeout. Any deployment that accepts WebSocket upgrades with default settings is exposed, notably Phoenix LiveView and Phoenix Channels applications; the vendor advisory includes reproduction steps (a public PoC reference exists; it is not verified as working exploit code), no public exploit tooling or active exploitation is indicated by the available data, and the vendor has released a fix in 1.14.0.

RemediationAI

Vendor-released patch: upgrade to bandit 1.14.0, which enforces max_fragmented_message_size against accumulated fragment iodata and closes oversized fragmented messages with 1009; the fix is in commit 220b9dfd27f9a21305be2afc75cbe585ddc24e7a against the option introduced in 21612c7c7b1ce43eccd36d3af3a2299d23513667, and is documented at https://github.com/mtrudel/bandit/security/advisories/GHSA-cpx7-qf6w-jc63. If upgrading cannot be done immediately, the vendor workaround is to set websocket_options: [max_fragmented_message_size: ...] to the largest fragmented message the application legitimately needs (for example 65_536); per-connection memory still scales at roughly 150 times that value, so this lowers the ceiling but does not remove the amplification, and it will reject legitimate fragmented messages above the chosen limit, so the limit must be sized to real application traffic. The vendor states that updating is the only complete fix; applications that do not accept WebSocket upgrades are not affected by this code path.

Affected VersionsENISA

bandit 21612c7c7b1ce43eccd36d3af3a2299d23513667 <220b9dfd27f9a21305be2afc75cbe585ddc24e7a
bandit 1.11.0 <1.14.0

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

Bandit is a pure-Elixir HTTP/1 and HTTP/2 server for the BEAM VM, used directly and as the underlying adapter for Phoenix. The flaw is CWE-770 (Allocation of Resources Without Limits or Throttling) in Bandit.WebSocket.Connection, where RFC 6455 fragmented message reassembly is performed: the module tracks fragment_size by summing IO.iodata_length(frame.data) of received fragments, but each non-final continuation frame is retained as a cons cell around its own binary ([connection.fragment_frame.data | frame.data]) without any cap on the number of fragments. A 1-byte continuation frame occupies 7 bytes on the wire but about 150-170 bytes of process heap (list cell plus binary overhead), so the byte-only accounting under-counts actual memory by roughly two orders of magnitude; against 1.12.5, one million fragments retained about 169 MB and three million about 450 MB, growing linearly, with only about 56 MB of traffic needed to reach the 8 MB payload cap. Ping frames are handled by handle_control_frame without touching fragment state, so they reset the idle timeout and keep the allocation alive. The upstream fix adds an oversize_message?/2 check that measures total iodata length of the accumulated fragments against max_fragmented_message_size (default 8_000_000, 0 disables), closes with 1009 on overflow, rejects zero-byte non-final continuation frames with 1008, raises the default max_frame_size to 8_000_000, and stores the accumulated iodata rather than nesting frames. The change is a resource-accounting correction, not a memory-safety or code-execution issue; there is no confidentiality or integrity impact in the assessed vector.

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 attacker triggers memory exhaustion against default WebSocket config (AV:N/AC:L/PR:N/UI:N); impact is availability-only (A:H) with no confidentiality or integrity effect and no scope change.

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 WebSocket fragment reassembly of mtrudel bandit allows an unauthenticated remote attacker to exhaust server memory via a fragmented message made of many 1-byte continuation frames.

Bandit.WebSocket.Connection checks max_fragmented_message_size against the payload bytes received, but keeps every non-final continuation frame as a new list cell around its own binary, and nothing limits the number of fragments. A 1-byte fragment costs 7 bytes on the wire but about 150 to 170 bytes of server memory, so one connection can hold about 150 times the configured limit, roughly 1.2 to 1.4 GB at the default 8 MB. Ping frames between fragments keep the connection alive past the idle timeout.

This issue affects bandit: from 1.11.0 before 1.14.0.

Technical POC Analysis

CWE-770 (Allocation of Resources Without Limits or Throttling).

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-114213 is a high-severity memory exhaustion vulnerability in the Bandit web server, used by many Elixir applications, that can be triggered by an unauthenticated attacker over a single WebSocket connection, potentially causing service disruption or outages. Organizations running affected Bandit versions, particularly those with Phoenix LiveView or Channels, should prioritize patching because exploitation is straightforward and the impact on availability is significant.

Business Impact: High
Compensating Controls

Apply vendor patch. If patching is delayed, consider implementing rate limiting or connection limits on WebSocket endpoints, increasing memory monitoring, and enabling early termination of idle or suspicious connections, though these are less effective than patching.

Threat Intelligence Overview

EPSS Score
0.6%
Top 51% exploitable
Prevalence
Medium
default Phoenix web server adapter, but within the niche Elixir ecosystem
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

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