CVE-2026-47066 json
Infinite loop in Alt-Svc header parser in hackney
published 2026-05-25 5 mo ago modified 2026-07-30 3 mo ago also EEF-CVE-2026-47066 , EUVD-2026-31686 , GHSA-6cp8-v795-jr2j
- cvss
- 7.5
- version 3.1, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.8%
- EPSS 0.8% chance of exploitation in 30 days, percentile 55%
- public exploits
- 0
- none known
Summary
Loop with Unreachable Exit Condition ('Infinite Loop') vulnerability in benoitc hackney allows Excessive Allocation. The Alt-Svc response header parser in src/hackney_altsvc.erl does not guarantee forward progress. When parse_token/2 receives a non-token, non-whitespace, non-comma byte (e.g. !, @, =, ;), it returns the input unchanged. skip_comma/1 also returns the buffer unchanged when the first byte is not a comma. parse_entries/2 then recurses with identical data, creating a tight infinite tail-recursive loop that pins a scheduler at 100% CPU. The calling process never returns.
The entry point parse_and_cache/3 is called synchronously in the connection process on every HTTP response. A single-byte Alt-Svc: ! response header is sufficient to trigger the hang; the header is fully controlled by any HTTP origin the client connects to.
This issue affects hackney: from 2.0.0-beta.1 before 4.0.1.
Patch / fix
- hex hackney 4.0.1
- benoitc hackney 4.0.1
CISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- yes
- Technical impact
- partial
- Assessed
- 5 mo ago
Exploit prediction
0.75% chance of exploitation in the next 30 days, higher than 55% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- github.com https://github.com/benoitc/hackney/security/advisories/GHSA-6cp8-v795-jr2j referenced PoC, tagged "exploit" by a source, unverified
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 |
| NVD | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| hex | hackney | >=2.0.0, <4.0.1 >=2.0.0-beta.1, <4.0.1 |
4.0.1 |
Affected products
- benoitc hackney
Classification
- Weakness
-
- CWE-835 Loop with Unreachable Exit Condition
References
-
github.com
/benoitc/hackney/commit/e548aba1f97ffa3f4750da7b772998fb78c01894
patch, web
-
github.com
/benoitc/hackney/security/advisories/GHSA-6cp8-v795-jr2j
vendor-advisory, related, exploit, web, patch, advisory
-
cna.erlef.org
/cves/CVE-2026-47066.html
related, web, patch, third-party-advisory
-
osv.dev
/vulnerability/EEF-CVE-2026-47066
related, web, patch, third-party-advisory
-
nvd.nist.gov
/vuln/detail/CVE-2026-47066
advisory
-
github.com
/benoitc/hackney
package
-
hex.pm
/packages/hackney
package
Sources
- CVE List CVE-2026-47066
- GitHub Advisory GHSA-6cp8-v795-jr2j
- NVD CVE-2026-47066
- OSV EEF-CVE-2026-47066
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.