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
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.hum1fixed: 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
-
github.com
/ninenines/cowlib/commit/f582430498072a0c65ad338030321576dc13a343
patch
-
cna.erlef.org
/cves/CVE-2026-59248.html
third-party-advisory, related, web
-
osv.dev
/vulnerability/EEF-CVE-2026-59248
related
-
hex.pm
/packages/cowlib
package
Sources
- CVE List CVE-2026-59248
- NVD CVE-2026-59248
- OSV EEF-CVE-2026-59248
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.