CVE-2026-113431 · Package
NO FIX YET · SEE WHAT TO DO
Cowlib's HTTP/2 header decoder does not enforce the decoded header list size limit, so a small compressed HEADERS block expands to about 390 KB. A remote unauthenticated peer can repeat this across streams and connections to exhaust the memory of an HTTP/2 endpoint.
first public Nov 6, 2026 · 1 source
Check it with your coding agent
It checks your repository and tells you if you’re affected, with the fix.
Any Erlang service that uses cowlib from version 2.7.0 onward to serve HTTP/2, such as Cowboy-based servers, is exposed to remote unauthenticated peers. The decoded header list is copied per stream, so the risk is greatest where repeated cookie fields are joined. Services that do not serve HTTP/2 through cowlib can skip it.
Not affected if no-http2, pre-2.7.0
Who cares cowboy, cowlib, erlang, http2
rebar.lock or mix.lock; affected from 2.7.0 onward.cow_http2_machine).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.
Are you affected?
Tell InfraStack what you run. It checks this one, and every next one, against your stack.
Ask from here. InfraStack checks the affected versions against your stack and answers in your inbox.
InfraStack checks the affected versions against your stack and answers in Slack, with the evidence and the fix.
This page as .md · .json · 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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
NVD data is provided by NIST and is public domain. Posts quoted belong to their authors.