---
id: CVE-2026-114213
title: >-
  WebSocket 1-byte continuation frames bypass `max_fragmented_message_size` in
  Bandit
summary: >-
  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 con…
severity: high
cvss: 8.7
cvssVector: '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'
cvssSource: cna
cwe:
  - CWE-770
vendor: mtrudel
product: bandit
affected:
  - bandit >= 1.11.0 < 1.14.0
  - >-
    mtrudel/bandit >= 21612c7c7b1ce43eccd36d3af3a2299d23513667 <
    220b9dfd27f9a21305be2afc75cbe585ddc24e7a
ssvc:
  exploitation: none
  automatable: 'yes'
  technicalImpact: partial
  timestamp: '2026-10-26T15:03:01.722486Z'
published: '2026-10-26'
updated: '2026-10-26'
sourceUpdated: '2026-10-26T15:35:51.785Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-114213'
references:
  - url: 'https://github.com/mtrudel/bandit/security/advisories/GHSA-cpx7-qf6w-jc63'
    label: >-
      WebSocket 1-byte continuation frames bypass `max_fragmented_message_size`
      in Bandit
  - url: 'https://cna.erlef.org/cves/CVE-2026-114213.html'
    label: EEF CNA record for CVE-2026-114213
  - url: 'https://osv.dev/vulnerability/EEF-CVE-2026-114213'
    label: OSV record EEF-CVE-2026-114213
  - url: >-
      https://github.com/mtrudel/bandit/commit/21612c7c7b1ce43eccd36d3af3a2299d23513667
    label: Introducing commit 21612c7 in mtrudel/bandit
  - url: >-
      https://github.com/mtrudel/bandit/commit/220b9dfd27f9a21305be2afc75cbe585ddc24e7a
    label: Fix commit 220b9df in mtrudel/bandit
tags:
  - cve.org
ingestedAt: '2026-10-26T14:27:31.821Z'
---

## Overview

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.

## Affected

- `bandit >= 1.11.0 < 1.14.0`
- `mtrudel/bandit >= 21612c7c7b1ce43eccd36d3af3a2299d23513667 < 220b9dfd27f9a21305be2afc75cbe585ddc24e7a`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.

### Workarounds

Lower websocket_options: [max_fragmented_message_size: ...] to the largest fragmented message the application needs, for example 65_536. Memory per connection stays at about 150 times this limit, so a lower limit lowers the ceiling.
