Skip to content
Fencer Vulns
high 8.7

CVE-2026-59248 json

Unbounded HPACK/QPACK prefixed-integer decoding in Cowlib causes memory-exhaustion DoS

published 2026-07-28 3 mo ago modified 2026-10-24 16 d ago also EEF-CVE-2026-59248 , EUVD-2026-49739

cvss
8.7
version 4.0, CNA
cisa kev
Not listed
not in CISA's catalog
epss
0.3%
EPSS 0.3% chance of exploitation in 30 days, percentile 21%
public exploits
0
none known

Summary

Allocation of resources without limits vulnerability in ninenines cowlib allows an unauthenticated remote HTTP/2 or HTTP/3 peer to exhaust memory on the vulnerable server (or client) and cause a denial of service.

The HPACK and QPACK prefixed-integer decoder cow_hpack_common:dec_big_int/3 in src/cow_hpack_common.hrl (invoked from cow_hpack:decode/2 in src/cow_hpack.erl and from cow_qpack:decode_field_section/3 in src/cow_qpack.erl) reads continuation octets until it sees one whose high bit is clear, evaluating Int + (Value bsl M) at each step with the shift M growing by seven per octet. No limit is enforced on the number of continuation octets, on the resulting bit width, or on the value; the decoder consumes whatever encoded length the peer supplies.

Because Erlang integers are immutable, each intermediate Value bsl M and each accumulator update allocates a fresh bignum whose digit width grows linearly with the number of octets processed so far. Summed across the whole decode, the transient bignum digit materialization is on the order of the square of the encoded length. A single maximal HPACK indexed representation carried inside one HTTP/2 HEADERS plus one CONTINUATION frame at Cowboy's default max_frame_size_received can force hundreds of megabytes of transient allocation and garbage-collection churn before the resulting header-table index is rejected as invalid. Repeated or concurrent connections multiply the pressure and can drive the Erlang VM to memory exhaustion.

Cowlib is the HTTP parser used by Cowboy, RabbitMQ's management plugin, and other Erlang and Elixir HTTP/2 and HTTP/3 servers and clients, so any exposed endpoint that accepts HPACK or QPACK from an untrusted peer is reachable.

This issue affects cowlib: from 2.0.0 before 2.19.0.

Patch / fix

  • hex cowlib 2.19.0
  • ninenines cowlib 2.19.0
  • erlang-cowlib Debian 14 2.19.0-1

debian advisories DEBIAN-CVE-2026-59248

  • rabbitmq-server Ubuntu 22.04 LTS 3.9.27-0ubuntu0.5
  • rabbitmq-server Ubuntu 24.04 LTS 3.12.1-1ubuntu1.6
  • rabbitmq-server Ubuntu 26.04 LTS 4.0.5-10ubuntu5.1
  • rabbitmq-server Ubuntu Pro 20.04 LTS 3.8.3-0ubuntu0.3+esm1

ubuntu advisories UBUNTU-CVE-2026-59248

Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0

  • rabbitmq-server4.3 hummingbird 1 4.3.5-0.1.hum1
  • rabbitmq-server4.2 hummingbird 1 4.2.9-0.2.hum1
  • rabbitmq-server4.3 hummingbird 1 4.3.4-0.2.hum1

red hat advisories RHSA-2026:57882RHSA-2026:47236RHSA-2026:47231

  • rabbitmq-server Azure Linux 3.0 3.13.7-9

azure linux advisories AZL-94305

Azure Linux vulnerability data, Copyright (c) Microsoft Corporation, from https://github.com/microsoft/AzureLinuxVulnerabilityData via OSV, under the MIT licence; changed: normalised to fixed package versions per release. MIT

Vendor advisories

What the vendors themselves say about their products: affected, fixed or not affected, and what to do.

red hat product security vex CVE-2026-59248 updated cvss 7.5

cowlib: Cowlib: Denial of Service due to unbounded HPACK/QPACK prefixed-integer decoding

  • Red Hat Hardened Images rabbitmq-server4.2 4.2.9-0.2.hum1, rabbitmq-server4.3 4.3.4-0.2.hum1
    fixed: vendor fix RHSA-2026:47236

Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf

CISA SSVC

Exploitation
none
Automatable
yes
Technical impact
partial
Assessed
3 mo ago

Exploit prediction

0.29% chance of exploitation in the next 30 days, higher than 21% of all scored CVEs (FIRST EPSS, 2026-11-08).

CVSS scores

assigned by version score vector
CNA 4.0 8.7 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
CNA 4.0 8.7 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

Affected packages

ecosystem package affected fixed in
hex cowlib
>=2.0.0-pre.1, <2.19.0
2.19.0

Affected products

  • ninenines cowlib

Classification

Weakness
  • CWE-770 Allocation of Resources Without Limits or Throttling

References

Sources

Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.

CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.