CVE-2026-65623: CWE-407 Inefficient Algorithmic Complexity in mtrudel bandit
Inefficient Algorithmic Complexity vulnerability in mtrudel bandit allows unauthenticated remote denial of service via CPU exhaustion during WebSocket fragment reassembly. The size guard 'Elixir.Bandit.WebSocket.Connection':oversize_message?/2 called from handle_frame/3 in lib/bandit/websocket/connection.ex appends each non-final continuation frame to a left-nested iolist and then re-measures the entire accumulated buffer with IO.iodata_length/1 on every frame. Because the buffer grows by one element per frame and is fully re-traversed each time, reassembly work is quadratic (O(n^2)) in the number of continuation frames. The max_fragmented_message_size limit (default 8 MB) bounds total bytes but not frame count, and each frame can carry as little as one payload byte, so an attacker can send millions of tiny continuation frames using modest bandwidth to pin a CPU core for minutes to hours. Many concurrent connections can starve the whole server of CPU, denying service to legitimate users. The WebSocket read timeout does not help, because it is an idle timeout evaluated between reads and cannot preempt the synchronous reassembly work spent inside a single callback. This issue affects bandit: from 1.11.0 before 1.12.1.
AI Analysis
Technical Summary
The vulnerability in mtrudel bandit (CVE-2026-65623) is due to inefficient algorithmic complexity in WebSocket fragment reassembly. Specifically, the function 'Elixir.Bandit.WebSocket.Connection':oversize_message?/2 is called on every continuation frame and appends each frame to a left-nested iolist, then re-measures the entire accumulated buffer with IO.iodata_length/1. Because the buffer grows by one element per frame and is fully re-traversed each time, the reassembly work is quadratic (O(n^2)) in the number of continuation frames. Although the total message size is limited (default 8 MB), there is no limit on the number of frames, and each frame can be as small as one byte. An attacker can exploit this by sending millions of tiny continuation frames, causing CPU exhaustion and denial of service. The WebSocket read timeout does not mitigate this because it only triggers on idle connections and cannot interrupt the synchronous reassembly process. This affects bandit versions from 1.11.0 before 1.12.1.
Potential Impact
An unauthenticated remote attacker can exploit this vulnerability to cause a denial of service by exhausting CPU resources on the server hosting the bandit WebSocket service. This can lead to prolonged CPU starvation, potentially affecting many concurrent connections and denying service to legitimate users. The vulnerability does not require authentication or user interaction.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. There is no official fix or patch information provided at this time. Until a patch is available, consider limiting the number of continuation frames or implementing rate limiting on WebSocket frames if possible to mitigate CPU exhaustion. Monitor vendor channels for updates and apply official fixes once released.
CVE-2026-65623: CWE-407 Inefficient Algorithmic Complexity in mtrudel bandit
Description
Inefficient Algorithmic Complexity vulnerability in mtrudel bandit allows unauthenticated remote denial of service via CPU exhaustion during WebSocket fragment reassembly. The size guard 'Elixir.Bandit.WebSocket.Connection':oversize_message?/2 called from handle_frame/3 in lib/bandit/websocket/connection.ex appends each non-final continuation frame to a left-nested iolist and then re-measures the entire accumulated buffer with IO.iodata_length/1 on every frame. Because the buffer grows by one element per frame and is fully re-traversed each time, reassembly work is quadratic (O(n^2)) in the number of continuation frames. The max_fragmented_message_size limit (default 8 MB) bounds total bytes but not frame count, and each frame can carry as little as one payload byte, so an attacker can send millions of tiny continuation frames using modest bandwidth to pin a CPU core for minutes to hours. Many concurrent connections can starve the whole server of CPU, denying service to legitimate users. The WebSocket read timeout does not help, because it is an idle timeout evaluated between reads and cannot preempt the synchronous reassembly work spent inside a single callback. This issue affects bandit: from 1.11.0 before 1.12.1.
CVSS v4.0
Score 8.7high
Affected software
cpe:2.3:a:mtrudel:bandit:*:*:*:*:*:*:*:*Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
Weaknesses
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The vulnerability in mtrudel bandit (CVE-2026-65623) is due to inefficient algorithmic complexity in WebSocket fragment reassembly. Specifically, the function 'Elixir.Bandit.WebSocket.Connection':oversize_message?/2 is called on every continuation frame and appends each frame to a left-nested iolist, then re-measures the entire accumulated buffer with IO.iodata_length/1. Because the buffer grows by one element per frame and is fully re-traversed each time, the reassembly work is quadratic (O(n^2)) in the number of continuation frames. Although the total message size is limited (default 8 MB), there is no limit on the number of frames, and each frame can be as small as one byte. An attacker can exploit this by sending millions of tiny continuation frames, causing CPU exhaustion and denial of service. The WebSocket read timeout does not mitigate this because it only triggers on idle connections and cannot interrupt the synchronous reassembly process. This affects bandit versions from 1.11.0 before 1.12.1.
Potential Impact
An unauthenticated remote attacker can exploit this vulnerability to cause a denial of service by exhausting CPU resources on the server hosting the bandit WebSocket service. This can lead to prolonged CPU starvation, potentially affecting many concurrent connections and denying service to legitimate users. The vulnerability does not require authentication or user interaction.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. There is no official fix or patch information provided at this time. Until a patch is available, consider limiting the number of continuation frames or implementing rate limiting on WebSocket frames if possible to mitigate CPU exhaustion. Monitor vendor channels for updates and apply official fixes once released.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- EEF
- Date Reserved
- 2026-07-22T13:55:59.401Z
- Cvss Version
- 4.0
- State
- PUBLISHED
- Remediation Level
- null
Threat ID: 6a6398959c2644c7f843de5c
Added to database: 07/24/2026, 16:53:41 UTC
Last enriched: 07/24/2026, 17:07:34 UTC
Last updated: 07/25/2026, 02:40:20 UTC
Views: 9
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.