Bandit: Inefficient algorithmic complexity in header integer parsing
Summary
Bandit, a pure-Elixir HTTP server, parses Content-Length and Host or :authority port values digit by digit without a length limit, so the cost grows quadratically with the input length. An unauthenticated remote attacker can send oversized values over HTTP/1 or HTTP/2 to consume server CPU time. Over HTTP/2, HPACK dynamic table reuse lets a small amount of traffic trigger repeated expensive parsing, and the reporter measured 27.9 s of CPU time for 124 KB of traffic.
Affected
- Hex package bandit from 1.0.0-pre.7 before 1.14.0
- Git range from commit e0c8c0c to 220b9df (per CNA record)
Fixed in
- Bandit 1.14.0
- Note: a separate advisory (EEF-CVE-2026-116078) requires 1.14.1 or later if HTTP/2 is enabled
Workaround
Unknown.
Exploitation
- No evidence of exploitation in the wild found.
- CISA SSVC: exploitation none, automatable yes, technical impact partial.
- A proof of concept is described in the advisory text; public exploit availability is unknown.
Our recommendation
- Inventory Elixir/Phoenix applications and check mix.lock for bandit versions below 1.14.0.
- Upgrade to 1.14.0 at minimum, and to 1.14.1 or later if HTTP/2 is enabled.
- Redeploy and run mix hex.audit to confirm no open Bandit advisories remain.
- Until upgraded, limit request header sizes at a reverse proxy or load balancer for internet-facing services.
Public exploits
PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.
Research sources
- CNA record CVE-2026-113436 (ERLEF) cna.erlef.org
- GitHub Security Advisory GHSA-29cr-8477-rg6r github.com
- Fix commit 220b9df (version bump to 1.14.0) github.com
- Introducing commit e0c8c0c github.com
- OSV record EEF-CVE-2026-113436 osv.dev
- Ubuntu CVE record CVE-2026-113436 ubuntu.com
- OSV record EEF-CVE-2026-116078 (follow-up advisory) osv.dev
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:11.
Original description (NVD)
Inefficient Algorithmic Complexity vulnerability in the header integer parser of mtrudel bandit allows an unauthenticated remote attacker to consume server CPU via a content-length value or a Host or :authority port made of thousands of digits. Bandit.Headers.parse_integer/2 in lib/bandit/headers.ex builds the number one digit at a time with no limit on the digit count, allocating a new bignum at each step, so one value costs time quadratic in its length. It runs on raw request input over HTTP/1 and HTTP/2, before any range check. Over HTTP/2, a 4,000-digit value can be stored once in the HPACK dynamic table and re-sent on each new stream for about one byte: 124 KB of traffic kept the server busy for 27.9 s. This issue affects bandit: from 1.0.0-pre.7 before 1.14.0.
NVD references (5)
- https://cna.erlef.org/cves/CVE-2026-113436.html
- https://github.com/mtrudel/bandit/commit/220b9dfd27f9a21305be2afc75cbe585ddc24e7a
- https://github.com/mtrudel/bandit/commit/e0c8c0c30af9b0f57d8aafac37ddd9294363a8be
- https://github.com/mtrudel/bandit/security/advisories/GHSA-29cr-8477-rg6r
- https://osv.dev/vulnerability/EEF-CVE-2026-113436
Sources
The tracker combines official, freely usable data sources – updated continuously:
- NVD (NIST) – CVEs, rating (CVSS), affected products
- CISA KEV – vulnerabilities confirmed by CISA as actively exploited
- CISA Vulnrichment – CISA assessment (SSVC) in the official CVE record
- FIRST EPSS – probability of exploitation
- Microsoft MSRC – Patch Tuesday: vulnerabilities, severity, updates
- PoC-in-GitHub – public proof-of-concept repositories
- Metasploit (Rapid7) – modules of the Metasploit Framework
- Exploit-DB (OffSec) – archive of public exploits (links only)
- Patch days: official vendor pages (linked per vendor) (Vendor patch days)
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.
