CVE-2026-58226
Unauthenticated denial-of-service via unbounded HPACK integer decoding in hpax
Vulnerability description
Inefficient Algorithmic Complexity vulnerability in elixir-mint hpax allows unauthenticated denial-of-service via unbounded HPACK integer decoding.
hpax decodes HPACK variable-length integers with no upper bound on the decoded value or the number of continuation octets. 'Elixir.HPAX.Types':decode_remaining_integer/3 accumulates the integer as int + (value <<< m), shifting by 7 more bits for each continuation octet and stopping only on a terminating octet or truncated input, never because the integer grew too large. Because BEAM integers are arbitrary precision, a run of N continuation octets builds an O(N)-bit bignum and re-adds into an ever-larger bignum on each step, so the total decoding cost is superlinear (about O(N^2)). An unauthenticated attacker who can send an HTTP/2 header block to a server using this decoder (reached through the 'Elixir.HPAX':decode/2 entry point) can supply a small header block that forces a large, attacker-controlled amount of CPU (and transient memory), a denial-of-service amplification.
This issue affects hpax from 0.1.1 before 1.0.4.
Affected
pkg:hex/hpax
| Module | Source File | Routine |
|---|---|---|
Elixir.HPAX
|
lib/hpax.ex
|
HPAX.decode/2
|
Elixir.HPAX.Types
|
lib/hpax/types.ex
|
HPAX.Types.decode_integer/2
|
HPAX.Types.decode_remaining_integer/3
|
pkg:github/elixir-mint/hpax
| Module | Source File | Routine |
|---|---|---|
Elixir.HPAX
|
lib/hpax.ex
|
HPAX.decode/2
|
Elixir.HPAX.Types
|
lib/hpax/types.ex
|
HPAX.Types.decode_integer/2
|
HPAX.Types.decode_remaining_integer/3
|
| Status | Type | Version | Changes / Fixed in |
|---|---|---|---|
| affected | git ⓘ | 56db437a7e
|
< 1ba4bb2dc9
|
References
- https://github.com/elixir-mint/hpax/security/advisories/GHSA-jj2p-32j7-whj2 vendor-advisory related
- https://osv.dev/vulnerability/EEF-CVE-2026-58226 related
- https://github.com/elixir-mint/hpax/commit/1ba4bb2dc91e80089cf89c73970ac3ded76f17eb patch
Credits
- Finder: Peter Ullrich
- Remediation developer: Andrea Leopardi
- Analyst: Jonatan Männchen / EEF
- Analyst: Eric Meadows-Jönsson
CVE record as JSON:
GET /cves/CVE-2026-58226.json
OSV record as JSON:
GET /osv/EEF-CVE-2026-58226.json