Read the docs
TI-2026-74311 Aliases CVE-2026-105659

Bandit HTTP/2 send timers reset, letting trickles pin stream processes

Priority HIGH 77CWE-400Published · Updated

Key facts

Attack vector
Network
Privileges required
None
User interaction
None
Attack complexity
Low
Attack requirements
None
Impact type
Denial of service
Confidentiality · integrity · availability
None · None · High
Fix status
Fixed

Attack profile from CVSS 4.0 · CNA. Fix status from CNA. Impact type from CWE-400.

Summary

Bandit from 1.4.0 before 1.13.0 is affected. Blocked-send deadlines for HTTP/2 streams restart whenever the peer makes partial progress, so they never expire (CWE-400). An unauthenticated remote attacker can send a trickle of small WINDOW_UPDATE frames to keep stream processes, their Plug state and held resources alive indefinitely, exhausting server processes and memory.

Written with Claude Haiku 5.5 from the sources below · 2026-11-06

Description from the CNA

Uncontrolled Resource Consumption vulnerability in mtrudel bandit allows an unauthenticated remote attacker to pin HTTP/2 stream processes indefinitely via a trickle of small WINDOW_UPDATE frames. A stream whose response outruns the connection or stream send window blocks until the peer grants more window, and each block carries a 15 second deadline. Both deadlines restart whenever the peer makes partial progress. Bandit.HTTP2.Connection.finish_data/5 re-queues a partially advanced send in pending_sends with a fresh expires_at, so every WINDOW_UPDATE on stream 0, and every SETTINGS frame, resets the clock. Bandit.HTTP2.Stream.send_data/3 recurses on each stream WINDOW_UPDATE and re-arms a fresh after read_timeout. A peer that grants a few bytes every few seconds keeps the blocked stream process, its Plug state and any resource it holds mid-response alive for as long as it keeps dripping, and repeats this across streams and connections to exhaust server processes and memory. The two paths are independent. The stream-level block is reached on its own by widening the connection window with a large WINDOW_UPDATE on stream 0 and shrinking the per-stream window with a small SETTINGS_INITIAL_WINDOW_SIZE, so closing only the connection-level path leaves it exploitable. This issue affects bandit: from 1.4.0 before 1.13.0.

Why it matters now

Exploitation Proof of concept CISA SSVC · not in CISA KEV
EPSS 0.00616 49th percentileScored 2026-11-08
Fix Fixed bandit (mtrudel): 1.13.0

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
Poc
Automatable
Yes
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
mtrudelbandit1.4.0 to before 1.13.01.13.0Patch availableCNA
  • bandit Vendormtrudel Affected 1.4.0 to before 1.13.0 Fixed in 1.13.0 Patch available CNA

CPE names CNA · 1

CPEVersionsRoleVendor
cpe:2.3:a:mtrudel:bandit:*:*:*:*:*:*:*:*——mtrudel
  • cpe:2.3:a:mtrudel:bandit:*:*:*:*:*:*:*:* Versions — — ·mtrudel

Remediation

Upgrade bandit to version 1.13.0, the fixed version.

Written with Claude Haiku 5.5 from the sources below · 2026-11-06

  • Fix · CNA bandit (mtrudel) Fixed in 1.13.0

Timeline

  1. 2026-10-15 Threatist record created from CVE-2026-105659
  2. 2026-10-15 Fix available: [email protected] · CNA
  3. 2026-10-16 Priority changed: MEDIUM → LOW
  4. 2026-10-18 CISA SSVC decision points changed
  5. 2026-10-18 Priority changed: LOW → HIGH

References

  • TI-2026-81989 HTTP/2 request bodies made of 1-byte DATA frames amplify memory use in Bandit CVSS 4.0HIGH 8.7
  • TI-2026-52571 HTTP/2 connection-window starvation pins Plug processes indefinitely in Bandit CVSS 4.0HIGH 8.7
  • TI-2026-46780 Quadratic CPU blow-up reassembling fragmented WebSocket messages in Bandit CVSS 4.0HIGH 8.7
  • TI-2026-31007 WebSocket fragmented message reassembly unbounded in bandit CVSS 4.0HIGH 8.7
  • TI-2026-28689 HTTP/1 chunked decoder infinite loop on requests with trailer fields in bandit CVSS 4.0HIGH 8.7
  • TI-2026-28686 HTTP/1 chunked body reader ignores length cap in bandit CVSS 4.0HIGH 8.7
See all 23 →

Sources

This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences