IT SBIT Services
Schneeberger
DEEN
CVE tracker

Bandit: Uncapped HPACK table size in HTTP/2 allows resource exhaustion

CVE-2026-110499High 8.7

← All vulnerabilities

Summary

Bandit, an Elixir HTTP server, applies any HPACK encoder table size that an HTTP/2 client advertises, up to about 4 GB, without a server-side limit. Response headers with changing values are stored in this table, which grows for the life of the connection and is scanned linearly for each lookup. An unauthenticated remote attacker can make one HTTP/2 connection progressively more expensive in CPU and memory, which can exhaust server resources. The issue affects Bandit from 0.3.6 before 1.14.0.

Affected

  • Bandit (Hex package bandit) from 0.3.6 before 1.14.0

Fixed in

  • Bandit 1.14.0 (fix commit 220b9df)

Workaround

  • Disable HTTP/2: http_2_options: [enabled: false]
  • Or limit requests per HTTP/2 connection (from 0.7.0): http_2_options: [max_requests: 1000]

Exploitation

  • CISA SSVC: exploitation none, automatable yes, technical impact partial.
  • No evidence of exploitation in the wild was found at the time of writing.

Our recommendation

  • Identify Bandit services in your Elixir applications (check mix.lock).
  • Upgrade to Bandit 1.14.0 or later.
  • If HTTP/2 is exposed directly to the internet and an upgrade is not possible, disable HTTP/2 or apply the per-connection request limit.
  • Monitor CPU and memory usage of HTTP/2 services.

Public exploits

PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.

Research sources

Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 1 Nov 2026, 00:13.

Original description (NVD)

Allocation of Resources Without Limits or Throttling vulnerability in the HTTP/2 implementation of mtrudel bandit allows an unauthenticated remote attacker to grow per-connection memory and CPU cost without bound via a large SETTINGS_HEADER_TABLE_SIZE. Bandit resizes its HPACK encoder table to whatever size the client advertises, up to 2^32-1 bytes, and indexes response headers into it. Because responses carry distinct values such as date or content-length, nothing is evicted and the table grows with every response for the life of the connection, while each lookup scans it linearly. The SETTINGS handling in Bandit.HTTP2.Connection (lib/bandit/http2/connection.ex) passes remote_settings.header_table_size to HPAX.resize/2 with no server-side cap, and encode_headers encodes every response header as :store. Serving N responses on one connection therefore costs O(N²) CPU in the connection process. This issue affects bandit: from 0.3.6 before 1.14.0.

NVD references (5)

Sources

The tracker combines official, freely usable data sources – updated continuously:

This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.

Affected? We can help.

We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.