Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSupply oversized all-digit version component via HTTP parameter or manifest field
-
DeliveryApplication calls Version.parse/1 or Version.match?/3 without input length validation
-
ExploitParser passes unbounded digit string to :erlang.binary_to_integer/1
-
ExecutionSuper-linear arbitrary-precision conversion pins BEAM scheduler
-
PersistProcess crashes with SystemLimitError or scheduler starved
-
ImpactDenial of service for dependent requests
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that an attacker can supply a string to any of five specific public functions: Version.parse/1, Version.parse!/1, Version.match?/3, Version.compare/2, or Version.parse_requirement/1, where at least one dot-delimited segment of the version string consists entirely of decimal digits and exceeds 14 characters in length (approximately 1 MB is sufficient for significant scheduler impact). No authentication is required against the Elixir library itself (PR:N in CVSS vector). Applications that only parse version strings generated internally or from already-validated sources are not exploitable. Exploitation is further limited to processes that call these functions on external input - common in package managers, CI/CD dependency resolvers, API endpoints accepting version constraints, and systems processing third-party package manifests. The CVSS AV:L designation may cause defenders to underestimate risk: the library is local, but the data path from network to vulnerable function is direct and common in web-facing Elixir applications. |
| Impact | CVSS 4.0 scores this 5.1 (Medium) with AV:L/AC:L/AT:N/PR:N/UI:N and impact limited to VA:L - local availability only, no confidentiality or integrity impact. The AV:L designation warrants scrutiny: the CVSS vector scores the library in isolation, but the description explicitly identifies HTTP request parameters and package manifest fields as routine call sites, meaning deployed web services effectively expose this to unauthenticated remote attackers. This is a meaningful real-world discrepancy defenders should assess against their own deployment. The attack requires no authentication (PR:N), no user interaction (UI:N), and no special configuration - only that the application passes external input to a Version function. There is no CISA KEV listing and no public exploit identified at time of analysis, suggesting no current widespread exploitation. The triviality of constructing the payload (a long digit string) means exploitation barrier is very low if the entry point is reachable. Impact is constrained to availability - process crash or scheduler starvation - with no data exfiltration risk. |
| Exploit ScenarioDerived | An attacker submits an HTTP GET request to a package registry or dependency-checking API endpoint with a version query parameter set to a string like '1.0.0-' followed by approximately one million ASCII digit characters. The server-side handler calls Version.match?/3 or Version.parse/1 on this value without prior validation. The BEAM scheduler servicing the request becomes pinned for an extended period executing :erlang.binary_to_integer/1 on the oversized component, starving other processes on that scheduler and causing request timeouts or a process crash. No public exploit code has been identified at time of analysis, but the attack is trivially constructable from the public vulnerability description and commit diff alone. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 09, 2026
Denial of service in Elixir's standard library Version module (versions 1.5.0 through 1.20.0) allows any caller passing an attacker-controlled version string to exhaust CPU and memory or crash the calling BEAM process. The five public entry points - Version.parse/1, Version.parse!/1, Version.match?/3, Version.compare/2, and Version.parse_requirement/1 - pass numeric version components to :erlang.binary_to_integer/1 without length bounds, triggering super-linear arbitrary-precision integer conversion; a single ~1 MB all-digit component suffices. Applications routinely invoke these functions on untrusted input (HTTP parameters, package metadata), making the effective attack surface broader than the CVSS AV:L classification implies. No public exploit has been identified at time of analysis, and the vulnerability is not listed in CISA KEV.
RemediationAI
Upgrade to Elixir 1.20.1 or later, which is the vendor-confirmed fixed release. The upstream patch is commit c64417d72fd5c7d09e963ca3ac5fa2b140978d9e (https://github.com/elixir-lang/elixir/commit/c64417d72fd5c7d09e963ca3ac5fa2b140978d9e), and the security advisory is at https://github.com/elixir-lang/elixir/security/advisories/GHSA-w2h8-8x3g-278p. If an immediate upgrade to 1.20.1 is not feasible, applications should apply input validation at the boundary where version strings are received - specifically rejecting any string containing a dot-delimited numeric segment longer than 14 characters, or enforcing a hard total input length cap (e.g., 100 bytes). This guard should be applied before any call to Version.parse/1 or related functions. Trade-off: application-level length validation duplicates logic that 1.20.1 now handles natively, and may need adjustment if legitimate version strings with long non-numeric identifiers (e.g., build metadata) are expected. Blocking or sandboxing requests containing excessively large version query parameters at the WAF or API gateway layer is an additional compensating control with no application-code side effects.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause resides in lib/elixir/lib/version.ex, specifically the Version.Parser private routine parse_digits/2 and convert_parts_to_integer/2. Prior to 1.20.1, all four numeric slots of a semantic version (major, minor, patch, and numeric pre-release identifiers) were fed without length validation to String.to_integer/1, which dispatches to the Erlang BIF :erlang.binary_to_integer/1. Because Elixir and Erlang integers are arbitrary-precision, converting a large decimal string requires super-linear time and heap allocation relative to digit count. At extreme sizes, the Erlang runtime raises a SystemLimitError, crashing the calling process unhandled. CWE-400 (Uncontrolled Resource Consumption) describes this class precisely: the parser fails to bound the computational cost of its input. The fix (commit c64417d72fd5c7d09e963ca3ac5fa2b140978d9e) introduces the compile-time constant @max_numeric_component_digits 14, rejecting any purely-numeric component exceeding 14 digits at the byte-size check before conversion is attempted. CPE affected: cpe:2.3:a:elixir-lang:elixir:*:*:*:*:*:*:*:* for versions 1.5.0 up to but not including 1.20.1.
Know when Elixir gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
Lifecycle Timeline
1DescriptionCVE.org
Uncontrolled Resource Consumption vulnerability in the Elixir standard library's Version module allows an attacker who controls a version string to cause a denial of service through CPU and memory exhaustion.
The version parser converts numeric version components (major, minor, patch and numeric pre-release/build identifiers) to integers without bounding their length. A single large all-digit component therefore forces a super-linear, non-yielding base-10 to arbitrary-precision integer conversion (String.to_integer/1, i.e. :erlang.binary_to_integer/1) that pins a BEAM scheduler, and a larger component raises an uncaught SystemLimitError that crashes the calling process. A single moderately sized string (around one megabyte) is enough; no authentication is required.
This is reachable from the public entry points Version.parse/1, Version.parse!/1, Version.match?/3, Version.compare/2, and Version.parse_requirement/1, which applications routinely call on untrusted input such as HTTP parameters, dependency-manifest fields, and package metadata.
This vulnerability is associated with program files lib/version.ex and program routines 'Elixir.Version.Parser':parse_digits/2.
This issue affects Elixir: from 1.5.0 before 1.20.1.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Unbounded recursion in the Elixir `protobuf` Hex package (versions >= 0.8.0, < 0.16.1) lets unauthenticated remote attac
Improper JWT signature verification in Dashbit's nimble_zta (0.1.2 up to but not including 0.1.3) lets an unauthenticate
Session-swapping authentication bypass in the Elixir library AshAuthentication (versions 4.10.0 before 4.15.0 and 5.0.0-
Authentication bypass in the Elixir library ash_authentication lets an attacker who operates one federated identity-prov
Account takeover in AshAuthentication (Elixir/Ash) 4.14.0 through 4.14.x and 5.0.0-rc.10 through 5.0.0-rc.13 lets unauth
Server-Side Request Forgery protection bypass in the Elixir safeurl library (versions 0.1.0 and later) allows unauthenti
Unauthenticated remote CPU exhaustion in mtrudel Bandit's HTTP/2 server (versions before 1.14.0) is achievable by holdin
Unbounded per-connection memory and CPU growth in the Elixir Bandit HTTP/2 server (0.3.6 up to 1.14.0) lets an unauthent
Unauthenticated remote denial of service in the Elixir HTTP server Bandit (mtrudel/bandit) from 0.1.0 before 1.14.0 lets
Unauthenticated remote attackers can consume disproportionate server CPU on Bandit (mtrudel/bandit, Elixir/Erlang) by se
Memory-exhaustion denial of service in the elixir-protobuf library (protobuf) from 0.8.0 onward allows an unauthenticate
Atom table exhaustion in the Ash framework (Elixir) allows an unauthenticated remote attacker to crash a BEAM node by su
Same weakness CWE-400 – Uncontrolled Resource Consumption
View allSame technique Denial Of Service
View allVendor StatusVendor
SUSE
Severity: Moderate| Product | Status |
|---|---|
| SUSE Linux Enterprise Module for Package Hub 15 SP7 | Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP6 | Affected |
| openSUSE Leap 15.3 | Affected |
| openSUSE Leap 15.4 | Affected |
| openSUSE Leap 15.5 | Affected |
| openSUSE Leap 15.6 | Affected |
EUVD-2026-35439
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB