CVE-2026-75758 json
Unbounded recursion between Inspect.List charlist rendering and List.to_string/1 error path in Elixir
published 2mo ago modified 2mo ago also EUVD-2026-67707 , GHSA-jf5q-v438-665c
Unreviewed: the maintainers' own advisory
Published by the maintainers on their GitHub repository elixir-lang/elixir. GitHub has not reviewed it into the GitHub Advisory Database, so the affected packages and versions are the maintainers' word. Read the full advisory on GitHub.
- cvss
- 5.9
- version 4.0, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.2%
- EPSS 0.2% chance of exploitation in 30 days, percentile 7%
- public exploits
- 0
- none known
Summary
Uncontrolled Recursion vulnerability in the Elixir standard library allows an attacker who controls a list passed to inspect/1, List.to_string/1, or List.to_charlist/1 to exhaust a BEAM node's memory.
Inspect.List's charlist branch in lib/elixir/lib/inspect.ex classifies a list as a charlist using List.ascii_printable?/2, which examines only the first :printable_limit (4096 by default) elements, and then calls IO.chardata_to_string/1 on the whole term. A list whose printable prefix exceeds that limit but which contains a later element that is not a code point (an atom, an out-of-range integer, or an improper tail) is therefore mis-classified, and the conversion raises ArgumentError. That conversion runs inside List.to_string/1, whose rescue clause builds its message by interpolating inspect(list), which re-enters the same branch and raises again. The nested inspection is an argument to raise, so the recursion is not in tail position and every level is retained: the process stack grows monotonically while each cycle re-walks the list, until the process is killed by max_heap_size or, by default, the node runs out of memory. List.to_charlist/1 has the same rescue shape.
Below the printable limit the inner inspect/1 sees the invalid element within its counter and renders the list in ordinary bracket form, so a single ArgumentError is raised and no recursion occurs.
This issue affects elixir: from 1.15.0-rc.0 before 1.18.5, from 1.19.0-rc.0 before 1.19.6, and from 1.20.0-rc.0 before 1.20.4.
Patch / fix
- elixir-lang elixir 1.18.5, 1.19.6, 1.20.4
- elixir-lang Debian 14 1.20.4+dfsg-1
debian advisories DEBIAN-CVE-2026-75758
- elixir Alpine 3.24 1.19.6-r0
alpine advisories ALPINE-CVE-2026-75758
Alpine secdb © Alpine Linux, from https://secdb.alpinelinux.org via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
Is CVE-2026-75758 in your stack? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerVendor 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-75758 updated cvss 6.2
elixir: Elixir: Denial of Service via uncontrolled recursion in list processing
-
Red Hat OpenStack Platform 16.2 elixir Red Hat OpenStack Platform 17.1 elixirunder investigation
-
Red Hat OpenStack Platform 18.0 elixirnot affected: vulnerable code not present
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
- Proof of concept is public
- Automatable
- no
- Technical impact
- partial
- Assessed
- 2mo ago
Exploit prediction
0.18% chance of exploitation in the next 30 days, higher than 7% of all scored CVEs (FIRST EPSS, 2026-11-11).
Exploits and checks
- github.com https://github.com/elixir-lang/elixir/security/advisories/GHSA-jf5q-v438-665c referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 5.9 | CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N |
| CNA | 4.0 | 5.9 | CVSS:4.0/AV:L/AC:L/AT:P/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 products
- elixir-lang elixir
Classification
- Weakness
-
- CWE-674 Uncontrolled Recursion
References
-
github.com
/elixir-lang/elixir/commit/1eff1acffd49bdcc0d7f57ca74c1603328eed68a
patch
-
github.com
/elixir-lang/elixir/commit/5230d73968f1b4969d2a2646786fa6c71475f5cc
patch
-
github.com
/elixir-lang/elixir/commit/a983c8c043b1fbf1d95df78a29149222dac2988c
patch
-
github.com
/elixir-lang/elixir/commit/0bba5887577b1e328da825bd018815fdc519685a
patch
-
github.com
/elixir-lang/elixir/security/advisories/GHSA-jf5q-v438-665c
vendor-advisory, related, exploit, advisory
-
cna.erlef.org
/cves/CVE-2026-75758.html
related
-
osv.dev
/vulnerability/EEF-CVE-2026-75758
related
Sources
- CVE List CVE-2026-75758
- NVD CVE-2026-75758
- Maintainer advisory GHSA-jf5q-v438-665c
Fencer Intel 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.
The maintainers of elixir-lang/elixir published their own advisory on GitHub. Reviewed sources take precedence over it.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.