CVE-2026-75758

Source
https://cve.org/CVERecord?id=CVE-2026-75758
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-75758.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-75758
Aliases
Downstream
Published
2026-08-28T11:28:53.505Z
Modified
2026-08-30T03:48:12.113921570Z
Severity
  • 5.9 (Medium) CVSS_V4 - 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 CVSS Calculator
Summary
Unbounded recursion between Inspect.List charlist rendering and List.to_string/1 error path in Elixir
Details

Uncontrolled Recursion vulnerability in the Elixir standard library allows an attacker who controls a list passed to inspect/1, List.tostring/1, or List.tocharlist/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.asciiprintable?/2, which examines only the first :printablelimit (4096 by default) elements, and then calls IO.chardatatostring/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.tostring/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 maxheapsize or, by default, the node runs out of memory. List.tocharlist/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.

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/75xxx/CVE-2026-75758.json",
    "unresolved_ranges": [
        {
            "source": "AFFECTED_FIELD",
            "extracted_events": [
                {
                    "introduced": "9718f2b90ce086ff8614d5782f4ec528495c98dd"
                },
                {
                    "fixed": "*"
                }
            ]
        }
    ],
    "cwe_ids": [
        "CWE-674"
    ],
    "cna_assigner": "EEF"
}
References

Affected packages

Git / github.com/elixir-lang/elixir

Affected ranges

Type
GIT
Repo
https://github.com/elixir-lang/elixir
Events
Database specific
Show details
{
    "source": [
        "DESCRIPTION",
        "REFERENCES"
    ],
    "extracted_events": [
        {
            "introduced": "1.15.0-rc.0"
        },
        {
            "fixed": "1.18.5"
        },
        {
            "introduced": "1.19.0-rc.0"
        },
        {
            "fixed": "1.19.6"
        },
        {
            "introduced": "1.20.0-rc.0"
        },
        {
            "fixed": "1.20.4"
        }
    ]
}

Affected versions

Other
main-latest
v1.*
v1.15.0-rc.0
v1.15.0-rc.1
v1.18-latest
v1.18.0
v1.18.0-rc.0
v1.18.1
v1.18.2
v1.18.3
v1.18.4
v1.19-latest
v1.19.0
v1.19.0-rc.0
v1.19.0-rc.1
v1.19.0-rc.2
v1.19.1
v1.19.2
v1.19.3
v1.19.4
v1.19.5
v1.20-latest
v1.20.0
v1.20.0-rc.0
v1.20.0-rc.1
v1.20.0-rc.2
v1.20.0-rc.3
v1.20.0-rc.4
v1.20.0-rc.5
v1.20.0-rc.6
v1.20.1
v1.20.2
v1.20.3

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-75758.json"