Vulnerability advisory
CVE-2026-113431
Unbounded decoded HTTP/2 header-list size in cowlib cow_http2_machine enables HPACK amplification memory exhaustion
Also known as EEF-CVE-2026-113431
- CVSS 4.0
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Affected versions
Repository
| Affected commits | Fixed by commit |
|---|---|
| GIT github.com/ninenines/cowlib ↗ | |
| b461b119e78e4e09bb28b186b09da7ed4a86a0dd to before a3b15e29b3067644bfd580246c87f7af7a90b3b8 | a3b15e29b3067644bfd580246c87f7af7a90b3b8 |
| Not specified | b461b119e78e4e09bb28b186b09da7ed4a86a0dd |
Description
Allocation of Resources Without Limits or Throttling vulnerability in ninenines cowlib allows an unauthenticated remote peer to exhaust the memory of an HTTP/2 endpoint via HPACK-indexed header fields.
cow_http2_machine:headers_decode/4 in src/cow_http2_machine.erl decodes every HEADERS block with cow_hpack:decode/3. It bounds the compressed block size and the number of fields, but not the size of the decoded header list that RFC 9113 section 6.5.2 places under SETTINGS_MAX_HEADER_LIST_SIZE. A peer stores one header value of up to the dynamic table size (4096 bytes by default) and then references it with one-byte indexed fields, so about 100 bytes on the wire decode to a header list of about 390 KB. A consumer that copies the decoded values, as Cowboy does when cowboy_http2:headers_to_map/2 joins repeated cookie fields into one binary, allocates that amount for every stream. The total across streams and connections is not bounded.
This issue affects cowlib: from 2.7.0 onward.
References
- Webgithub.com ↗
- Webosv.dev/vulnerability/EEF-CVE-2026-113431 ↗
- Webrepo.hex.pm ↗
- Advisorycna.erlef.org/cves/CVE-2026-113431.html ↗
- Advisorygithub.com/CVEProject/cvelistV5/tree/main/cves/2026/113xxx/CVE-2026-113431.json ↗
- Advisorynvd.nist.gov/vuln/detail/CVE-2026-113431 ↗
- Fixgithub.com/ninenines/cowlib/commit/a3b15e29b3067644bfd580246c87f7af7a90b3b8 ↗
- Fixgithub.com/ninenines/cowlib/commit/b461b119e78e4e09bb28b186b09da7ed4a86a0dd ↗
- Packagegithub.com/ninenines/cowlib ↗