HTTP/1 chunked body reader ignores length cap in bandit
Default status is the baseline for the product, each version can override it (e.g. patched versions marked unaffected).
| Vendor | Product | Default status | Versions | ||||||
|---|---|---|---|---|---|---|---|---|---|
| mtrudel | bandit | unaffected |
|
||||||
| mtrudel | bandit | unaffected |
|
No data.
| Vendor | Product | Versions | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Mtrudel | Bandit |
|
||||||||||||
| Mtrudel | Bandit |
|
||||||||||||
| Mtrudel | Bandit |
|
| Source | ID | Title |
|---|---|---|
Github GHSA |
GHSA-9q9q-324x-93r2 | Bandit: Unauthenticated one-shot DoS via `Transfer-Encoding: chunked` |
No CVSS v3.0
No CVSS v2
This CVE is not in the KEV list.
Exploit prediction score: < 1% (0.642% probability within 30 days)
| Type | Values Removed | Values Added |
|---|---|---|
| Metrics |
cvssV3_1
|
| Type | Values Removed | Values Added |
|---|---|---|
| Metrics |
ssvc
|
| Type | Values Removed | Values Added |
|---|---|---|
| Description | Allocation of Resources Without Limits or Throttling vulnerability in mtrudel bandit allows unauthenticated remote denial of service via memory exhaustion. The chunked clause of 'Elixir.Bandit.HTTP1.Socket':read_data/2 in lib/bandit/http1/socket.ex ignores the caller-supplied :length option when reading HTTP/1 chunked request bodies. Instead of capping the accumulated body at the configured limit (e.g. Plug.Parsers' default 8 MB), do_read_chunked_data!/5 buffers every received chunk into an iolist unconditionally and materializes the entire body as a single binary. The function always returns {:ok, body, ...}, so callers cannot interpose a 413 response. Because Plug.Parsers runs before routing and authentication in the standard Phoenix endpoint, an unauthenticated attacker needs no valid route or credentials. Sending a single Transfer-Encoding: chunked POST request with an arbitrarily large body to any path causes the BEAM process to exhaust available memory and be terminated by the OS OOM killer. The content-length path in the same function correctly enforces the limit and is not affected. This issue affects bandit: from 1.4.0 before 1.11.1. | |
| Title | HTTP/1 chunked body reader ignores length cap 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
|