CVE-2026-111101

HTTP/1.1 chunked request bodies made of 1-byte chunks amplify memory use in Bandit

Published Oct 26, 2026 CVSS 4.0 · 8.7 High EPSS < 1% KEV · Not listed
Description
Allocation of Resources Without Limits or Throttling vulnerability in the HTTP/1.1 chunked body reader of mtrudel bandit allows an unauthenticated remote attacker to exhaust server memory and CPU via a request body made of many 1-byte chunks.

The chunked reader in lib/bandit/http1/socket.ex keeps every chunk as its own list cell and binary term until IO.iodata_to_binary/1 joins them, and nothing limits the number of chunks. The :length option of read_body/2 counts only data bytes, so tiny chunks cost far more memory than their payload: 48 MB of 1-byte chunks grew one handler process to about 500 MB and took about 6 s of CPU. The route does not need to read the body, because on keep-alive connections ensure_completed/1 drains unread bodies through the same reader.

This issue affects bandit: from 0.1.0 before 1.14.0.

Analysis

AI-generated

Technical impact

The vulnerable chunked body reader in Bandit allocates memory without bounds when processing HTTP/1.1 requests composed of many 1‑byte chunks. A single 48 MB series of 1‑byte chunks can inflate a handler process to roughly 500 MB and consume several seconds of CPU time, effectively exhausting server resources. Although the route does not normally read the request body, the HTTP/1.1 protocol forces the reader to parse every chunk, so the attacker can trigger the issue without authentication or special privileges.

Affected Systems

This flaw affects the Bandit HTTP server from release 0.1.0 up through 1.13.99, including all 1.13.x and 0.xx.x versions. The product is produced by mtrudel under the name Bandit and is available via its GitHub repository.

Risk and Exploitability

The CVSS score of 8.7 indicates a high impact vulnerability. The EPSS score is currently undocumented, and the flaw is not listed in the CISA KEV catalog. The likely attack vector is an unauthenticated remote attacker sending a crafted HTTP/1.1 request with many tiny chunks. The exploit would require the server to accept HTTP/1.1 traffic; disabling HTTP/1.1 or limiting request parsing would mitigate exploitation. No public exploit is known, but the high severity warrants immediate attention.

Remediation

Vendor Workaround

From 0.7.0, a server whose clients and proxies all speak HTTP/2 can disable HTTP/1 with http_1_options: [enabled: false], so that the vulnerable chunked body reader never runs.


OpenCVE Recommended Actions

  • Upgrade Bandit to version 1.14.0 or later to apply the vendor fix
  • If upgrading is not yet possible, configure the server to disable HTTP/1.1 by setting http_1_options: [enabled: false] so that the vulnerable reader never runs
  • Ensure all clients and proxy servers also use HTTP/2; monitor server memory and CPU usage for anomalous spikes

Generated by OpenCVE AI on October 26, 2026 at 15:23 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories available
History
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description Allocation of Resources Without Limits or Throttling vulnerability in the HTTP/1.1 chunked body reader of mtrudel bandit allows an unauthenticated remote attacker to exhaust server memory and CPU via a request body made of many 1-byte chunks. The chunked reader in lib/bandit/http1/socket.ex keeps every chunk as its own list cell and binary term until IO.iodata_to_binary/1 joins them, and nothing limits the number of chunks. The :length option of read_body/2 counts only data bytes, so tiny chunks cost far more memory than their payload: 48 MB of 1-byte chunks grew one handler process to about 500 MB and took about 6 s of CPU. The route does not need to read the body, because on keep-alive connections ensure_completed/1 drains unread bodies through the same reader. This issue affects bandit: from 0.1.0 before 1.14.0.
Title HTTP/1.1 chunked request bodies made of 1-byte chunks amplify memory use in Bandit
First Time appeared Mtrudel
Mtrudel bandit
Weaknesses CWE-770
CPEs cpe:2.3:a:mtrudel:bandit:*:*:*:*:*:*:*:*
Vendors & Products Mtrudel
Mtrudel bandit
References
Metrics cvssV4_0

{'score': 8.7, 'vector': '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'}

Weaknesses
  • CWE-770

    Allocation of Resources Without Limits or Throttling

Sources

Status
PUBLISHED
Assigner
EEF
Published
Updated
Oct 26, 2026, 3:35 PM
Reserved
Oct 23, 2026, 12:30 PM
Status
Awaiting Analysis
Published
Oct 26, 2026, 2:16 PM
Modified
Oct 26, 2026, 4:59 PM