CVE-2026-47077
Unbounded body accumulation in HTTP/3 response loop in hackney
Vulnerability description
Allocation of Resources Without Limits or Throttling vulnerability in benoitc hackney allows Flooding.hackney_h3:await_response_loop/6 accumulates the HTTP/3 response body in memory without any size cap. The after Timeout clause is a per-message inactivity timer that resets on every received chunk, housekeeping message, or settings frame — it is not a wall-clock deadline. A malicious HTTP/3 server that emits one small chunk every Timeout - 1 ms with Fin = false and never sends a final frame keeps the loop alive indefinitely while the accumulation buffer grows linearly without bound, eventually exhausting the BEAM process heap and causing an out-of-memory condition.
This issue affects hackney: from 2.0.0 before 4.0.1.
Affected
pkg:hex/hackney
| Module | Source File | Routine |
|---|---|---|
hackney_h3
|
src/hackney_h3.erl
|
hackney_h3:await_response_loop/6
|
pkg:github/benoitc/hackney
| Module | Source File | Routine |
|---|---|---|
hackney_h3
|
src/hackney_h3.erl
|
hackney_h3:await_response_loop/6
|
| Status | Type | Version | Changes / Fixed in |
|---|---|---|---|
| affected | git ⓘ | 0334af206d
|
< 3d25f9fea2
|
Configurations
The application must use the HTTP/3 transport by calling hackney_h3 directly or by passing {transport, h3} to hackney:request/5. The default hackney transport (TCP/TLS) is not affected.
References
- https://github.com/benoitc/hackney/security/advisories/GHSA-jq4m-q6p2-8gwc vendor-advisory related
- https://osv.dev/vulnerability/EEF-CVE-2026-47077 related
- https://github.com/benoitc/hackney/commit/3d25f9fea26c90609de9d64366fedfe5065413bc patch
Credits
- Finder: Peter Ullrich
- Remediation developer: Benoit Chesneau
- Analyst: Jonatan Männchen
CVE record as JSON:
GET /cves/CVE-2026-47077.json
OSV record as JSON:
GET /osv/EEF-CVE-2026-47077.json