CVE-2026-115274Medium· 6.9▾ TwilightPoC availableImproper Validation of Specified Quantity in Input vulnerability in the Elixir standard library's JSON module allows an unauthenticated attacker who supplies a JSON document to cause a denial of service through CPU and memory exhaustion.…
▾ Twilight zone — High severity, or a signal on a lesser flaw
impact 38 · likelihood 0.1 · exploitation 12
A public proof-of-concept already exists for this vulnerability — see Exploit availability below.
Stakeholder-Specific Vulnerability Categorization from CISA's ADP record at CVE.org: whether exploitation is observed, whether an attack can be automated, and how much of the system is at stake. The CVSS score shown above comes from the assigning CNA record, not NVD.
Exploit-prediction probability, daily snapshots since Nov 5.
Disclosure to exploitation, from the record and what we observed since indexing it.
Disclosed via CVEORG
0.5%
Improper Validation of Specified Quantity in Input vulnerability in the Elixir standard library's JSON module allows an unauthenticated attacker who supplies a JSON document to cause a denial of service through CPU and memory exhaustion.
JSON.decode/1 and JSON.decode!/1 convert each integer literal with erlang:binary_to_integer/1 and do not bound its length. A literal of one million digits decodes successfully but costs 100 to 300 times as much CPU as a string of the same length, so one request body of a few megabytes holds a scheduler for about a second. A literal of more than about 1.29 million digits raises SystemLimitError. Applications generated by phx.new decode request bodies with JSON in Plug.Parsers, before routing and authentication.
This issue affects elixir: from 1.18.0-rc.0 before 1.18.6, from 1.19.0-rc.0 before 1.19.7, and from 1.20.0-rc.0 before 1.20.5.
elixir >= 1.18.0-rc.0 < 1.18.6elixir >= 1.19.0-rc.0 < 1.19.7elixir >= 1.20.0-rc.0 < 1.20.5elixir-lang/elixir >= 793c1147210388587defb649f25f293ffbfa6b1b < *Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
Decode untrusted JSON with an integer decoder that rejects long digit runs before conversion:
defmodule SafeJSON do def decode!(binary) do case JSON.decode(binary, :ok, integer: &safe_integer/1) do {decoded, :ok, ""} -> decoded _ -> raise ArgumentError, "invalid JSON" end end
defp safe_integer(digits) when byte_size(digits) <= 1024, do: String.to_integer(digits) defp safe_integer(_digits), do: raise(ArgumentError, "integer too long") end
In Phoenix, pass SafeJSON to Plug.Parsers as json_decoder instead of Phoenix.json_library().
Connected by shared product, vendor, weakness, or advisory.
CVE-2026-109821Medium· 6.3Unbounded port parsing in URI.parse/1 enables CPU exhaustion denial of service in Elixir
CVE-2026-49762Medium· 5.1Uncontrolled 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…
CVE-2026-97209Medium· 5.4Insecure temporary file in mix deps.partition lets a local user execute code in another user's dependency build
CVE-2026-118782High· 7.5Forge: PKCS#12 MAC forgery and constant-key PBE via zero iteration count
CVE-2026-115906Medium· 6.5zip: AES Entry HMAC Authentication Bypass on Premature EOF
CVE-2026-92386High· 8.1server-set cookie aborts cookie jar load