HTTP/1.1 chunked request bodies made of 1-byte chunks amplify memory use in Bandit
Impact
Bandit versions from 0.1.0 before 1.14.0 have an Allocation of Resources Without Limits or Throttling vulnerability, allowing an unauthenticated remote attacker to exhaust server memory and CPU via a request body made of many 1-byte chunks. The chunked reader keeps every chunk as its own list cell and binary term. This issue affects the HTTP/1.1 chunked body reader.
Summarized by @cf/meta/llama-3.3-70b-instruct-fp8-fast. Verify details against the original sources.What to do
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.
Affected packages
Affected products
Vendor version evidence. Product records are separate from automatic dependency matching.
mtrudel · EEF
bandit
1 range
mtrudel · EEF
bandit
Package identity
pkg:hex/banditExplore bandit →Identity supplied by EEF. Version matching requires compatible range evidence.
Compare with this publisher’s ranges. This does not inspect your installation.
affected
0.1.0 → before 1.14.0
semver versions
Other versions: unaffected
Product identifiers (CPE)
cpe:2.3:a:mtrudel:bandit:*:*:*:*:*:*:*:*mtrudel · EEF
bandit
1 range
mtrudel · EEF
bandit
Package identity
pkg:github/mtrudel/banditIdentity supplied by EEF. Version matching requires compatible range evidence.
Compare with this publisher’s ranges. This does not inspect your installation.
affected
7201270c34b90f6c9e15c0386c2bb802c0c72ab4 → before 220b9dfd27f9a21305be2afc75cbe585ddc24e7a
git versions
Other versions: unaffected
Product identifiers (CPE)
cpe:2.3:a:mtrudel:bandit:*:*:*:*:*:*:*:*Original source 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.
Inside the record
Evidence available
Describes the evidence in this view, not whether the product is safe.
Original records
CVE-2026-111101View the latest unmodified CVE JSON from the official source. It may be newer than this imported page.
cve.new JSON →Underlying weaknesses
The source’s classification of what caused the vulnerability.
Environment requirements
These conditions apply together as specified by the publisher. A matching product name alone does not establish exposure.
EEF · platform conditions
All conditions must hold
Any condition may hold
Vulnerable product
cpe:2.3:a:mtrudel:bandit:*:*:*:*:*:*:*:*From (inclusive): 0.1.0
Before: 1.14.0
Original applicability statements
[
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:mtrudel:bandit:*:*:*:*:*:*:*:*",
"versionEndExcluding": "1.14.0",
"versionStartIncluding": "0.1.0",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
],
"operator": "AND"
}
]Contributing organizations · 2
Assigning organization
Additional data publisher
What changed
Follow changesLarge field values are marked as truncated previews. Original source snapshots remain retained.