highVulnerability

CVE-2026-47067

### Summary [CVE-2026-47067](https://nvd.nist.gov/vuln/detail/CVE-2026-47067) is an atom table exhaustion vulnerability (CWE-770) in hackney's URL parser (`src/hackney_url.erl`). `hackney_url:parse_url/1` converts every URL scheme it encounters into a BEAM atom via `binary_to_atom/2`. Because BEAM atoms are never garbage-collected and the atom table has a hard limit of 1,048,576 entries, an attacker who can feed URLs with attacker-chosen scheme prefixes — directly as request targets, as webhook/callback URLs, or via `Location` headers in redirect chains — can exhaust the atom table and crash the entire BEAM VM with `system_limit`. ### Details **1. Scheme extraction and conversion** In `src/hackney_url.erl`, `parse_url/1` extracts the scheme binary (the part before `://`), validates it with `is_valid_scheme/1` (RFC 3986 alphabet: alpha-led, `<=19` bytes, alphanumeric/`+`/`-`/`.` body), lowercases it, then calls: ```erlang binary_to_atom(SchemeLower, utf8) ``` The resulting atom is stored on the `#hackney_url{}` record and returned to the caller. **2. Permanent atom accumulation** The validation constrains the alphabet but not uniqueness. The allowed scheme space is enormous (≈52·65¹⁸ values), far exceeding the default atom limit of 1,048,576. Each distinct scheme mints a new permanent atom. Even when hackney subsequently rejects an unsupported scheme with `{error, {unsupported_scheme, _}}`, the atom has already been interned and is never reclaimed. **3. Crash vector** The most dangerous path is redirect following: when hackney follows a `Location` header, the redirect target URL is re-parsed by the same function. An attacker-controlled server can serve a sequence of redirects — or a batch of URLs from an upstream feed — each with a fresh unique scheme, driving the atom count monotonically upward. At the limit the BEAM emits `system_limit` and the node terminates; recovery requires a full restart. ### PoC 1. Call `hackney_url:parse_url/1` (or `:hackney.req

Properties

ghsa_id
GHSA-9653-rcfr-5c62
summary
Hackney vulnerable to atom-table exhaustion via unrecognized URL schemes
severity
high
epss_score
0.00753
cve_id
CVE-2026-47067
is_ghsa_only
false
ghsa_published
2026-06-26T22:01:36Z
source_url
https://github.com/advisories/GHSA-9653-rcfr-5c62
epss_percentile
0.5164
ghsa_updated
2026-06-26T22:01:37Z

Related Entities (5)

ENRICHED_BY (1)

[Source]FIRST EPSS

HAS_WEAKNESS (1)

[Weakness]Allocation of Resources Without Limits or Throttling

REPORTED_BY (1)

[Source]GitHub Advisory Database

VULNERABLE_TO (1)

[Software]erlang/hackney

AFFECTS (1)

[Software]erlang/hackney

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-47067 — Ninja Signal Threat Intelligence | Ninja Signal