PT-2026-137921
CVE-2026-113431
·
Published
2026-11-06
·
Updated
2026-11-06
Description by
CVSS 4.0
8.7
HighMetricsAV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Name of the Vulnerable Software and Affected Versions
cowlib versions 2.7.0 and later
Description
An unauthenticated remote peer can cause memory exhaustion on an HTTP/2 endpoint. The issue occurs because the
cow http2 machine:headers decode/4 function in src/cow http2 machine.erl uses cow hpack:decode/3 to decode HEADERS blocks without enforcing a limit on the size of the decoded header list, ignoring the SETTINGS MAX HEADER LIST SIZE defined in RFC 9113. An attacker can store a large header value (up to 4096 bytes) in the dynamic table and reference it multiple times using one-byte indexed fields. This allows a small amount of network traffic to expand into a large memory allocation. For example, a 110-byte block can decode into a header list of approximately 390 KB. When a consumer, such as Cowboy using cowboy http2:headers to map/2, joins repeated cookie fields into a single binary, it allocates this expanded size for every stream, potentially leading to the Erlang VM running out of memory.Recommendations
For cowlib versions 2.7.0 and later, consider the following mitigations:
- For Cowboy servers that do not require HTTP/2, set
protocols => [http]in the protocol options to disable HTTP/2. - Lower the
max headersvalue in the HTTP/2 protocol options to reduce the memory allocation per stream. - As a temporary workaround, restrict the use of the
cookieparameter in HTTP/2 requests to minimize the risk of memory amplification.
Exploitability
Exploit
Fix
Impacts
Researchers
Vendors
Affected products
Found an issue in the description? Have something to add? Feel free to write us 👾