UBUNTU-CVE-2026-113431: High severity ubuntu/erlang-cowlib vulnerability

Published Nov 9, 2026
·
Updated

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. cowhttp2machine:headersdecode/4 in src/cowhttp2machine.erl decodes every HEADERS block with cowhpack: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 SETTINGSMAXHEADERLISTSIZE. 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 cowboyhttp2:headerstomap/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.

Affected Software

7 affected components
ubuntu/erlang-cowlib*
ubuntu/erlang-cowlib*
ubuntu/erlang-cowlib*
ubuntu/erlang-cowlib*
ubuntu/erlang-cowlib*
ubuntu/erlang-cowlib*
ubuntu/erlang-cowlib*

Event History

Nov 9, 2026
CVE Published
via OSV·12:00 AM
Data Sourced
via OSV·12:00 AM
DescriptionSeverityAffected Software

Frequently Asked Questions

1

Which deployments are most exposed?

HTTP/2 endpoints using cowlib from 2.7.0 onward are affected. Consumers that copy decoded header values are particularly exposed; Cowboy is specifically noted because it joins repeated cookie fields into a binary.

2

Does exploitation require authentication or interaction from an application user?

No. An unauthenticated remote HTTP/2 peer can trigger the issue without user interaction.

3

Do the existing HTTP/2 header limits prevent the memory amplification?

No. The implementation limits compressed block size and field count, but does not limit the decoded header-list size. With the default 4096-byte dynamic table, roughly 100 bytes of indexed fields can decode to about 390 KB of headers per stream.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203