CVE-2026-39806 Details
Description
Loop with Unreachable Exit Condition ('Infinite Loop') vulnerability in mtrudel bandit allows unauthenticated remote denial of service via worker process exhaustion. 'Elixir.Bandit.HTTP1.Socket':do_read_chunked_data!/5 in lib/bandit/http1/socket.ex terminates only when the last-chunk line 0\r\n is followed immediately by the empty trailer line \r\n. RFC 9112 §7.1.2 permits zero or more trailer fields between them. When trailers are present, none of the match clauses fit: the catch-all arm computes a negative to_read, calls read_available!/2, receives <<>> on timeout, and tail-recurses with unchanged state. The worker process is pinned for the lifetime of the TCP connection. A handful of concurrent connections sending RFC-conformant chunked requests with trailer fields is sufficient to exhaust the Bandit worker pool and render the server unresponsive to all further traffic. No authentication, special headers, or large payload is required. Proxies such as NGINX and HAProxy legitimately forward trailer-bearing requests, so servers behind such proxies may be affected without any malicious client involvement. This issue affects bandit: from 1.6.1 before 1.11.1.
A denial-of-service vulnerability has been identified in the Bandit HTTP server, specifically in versions 1.6.1 prior to 1.11.1. This vulnerability allows unauthenticated remote attackers to exhaust worker processes by sending chunked HTTP requests that include trailer fields. The issue arises because the chunked transfer decoder enters an infinite loop, pinning the worker for the duration of the TCP connection. This flaw can render the server unresponsive to all traffic. The vulnerability affects any Bandit-fronted HTTP/1 service that accepts chunked request bodies, a default setting for Phoenix and Plug applications.
Users can upgrade to Bandit version 1.11.1 or later to address this vulnerability.
Metrics
CVSS 4.0 Severity and Vector Strings:
CVSS 3.x Severity and Vector Strings:
No data available for CVSS Version 2.0 on this CVE.
CISA-ADP
Assessed May 13, 2026References to Advisories, Solutions, and Tools
By selecting these links, you will be leaving this site. These are references gathered from the official CVE record and are not endorsed by Volerion.
| URL | Source(s) | Tag(s) |
|---|---|---|
| https://github.com/mtrudel/bandit/security/advisories/GHSA-rf5q-vwxw-gmrf | CISA-ADP | ExploitVendor Advisory |
| https://cna.erlef.org/cves/CVE-2026-39806.html | EEF | Third Party Advisory |
| https://github.com/mtrudel/bandit/commit/ae3520dfdbfab115c638f8c7f6f6b805db34e1ab | EEF | Patch |
| https://github.com/mtrudel/bandit/security/advisories/GHSA-rf5q-vwxw-gmrf | EEF | ExploitVendor Advisory |
| https://osv.dev/vulnerability/EEF-CVE-2026-39806 | EEF | Third Party Advisory |
Weakness Enumeration
| CWE-ID | CWE Name | Source |
|---|---|---|
| CWE-835 | Loop with Unreachable Exit Condition ('Infinite Loop') | EEF |
Affected Products
| Product | Versions |
|---|---|
| mtrudel bandit | >= 1.6.1, < 1.11.1 |
CPE
Remediation
| |
Change History
5 change records found show changes
| Date | Action | Recorded By |
|---|---|---|
| Jun 17, 2026 | CVE Modified | EEF |
| Jun 17, 2026 | CVE Modified | CISA-ADP |
| May 21, 2026 | Initial Analysis | [email protected] |
| May 13, 2026 | CVE Modified | CISA-ADP |
| May 13, 2026 | New CVE Received | EEF |