Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessOpen WebSocket upgrade to Bandit server
-
DeliverySend non-final frame plus many 1-byte continuation frames
-
ExploitInterleave Ping frames to defeat idle timeout
-
ExecutionAmplify ~150x into BEAM memory
-
ImpactExhaust 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
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
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
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.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
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
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.
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
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
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
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-109821
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB