ZeroHour

CVE-2026-74837

niche

Unauthenticated DoS in ash_typescript via BEAM atom table exhaustion

CVSS 4.0
8.7 high
EPSS
<1%p24
Published
()
Modified
AI analysis

CVE-2026-74837 is an unauthenticated resource-exhaustion vulnerability (CWE-770) in the ash_typescript Elixir package that lets a remote attacker exhaust the BEAM atom table and abort the entire VM node, producing a high-availability-impact denial of service (CVSS 4.0 8.7) with no confidentiality or integrity impact. The flaw is reached through AshTypescript.Rpc.FieldProcessing.FieldSelector, which resolves every client-supplied RPC field name before checking that the field exists, after which AshTypescript.FieldFormatter.convert_to_field_atom/2 mints a new atom via String.to_atom/1 when none exists, with no allowlist, length bound, or rate limit; because BEAM atoms are never garbage collected, an attacker can submit large numbers of unique field names to permanently consume the atom table until the node aborts. A single field name longer than 255 characters additionally raises an uncaught SystemLimitError, providing a second failure path. Any application using ash_typescript from 0.1.0 before 0.18.0 to expose its RPC layer is affected, and unauthenticated endpoints are directly reachable per the CVSS vector (no privileges or user interaction required). No public proof of concept is known, the issue is not in CISA KEV, and EPSS estimates only a 0.3% probability of exploitation within 30 days, so no exploitation has been reported.

What to do: Upgrade ash_typescript to 0.18.0 or later. As interim mitigation, validate or allowlist RPC field names, cap field-name length below 255 characters, and rate-limit or require authentication on the RPC endpoint, while monitoring BEAM atom table usage (e.g., :erlang.system_info(:atom_count)) for abnormal growth. Teams should confirm whether their application exposes the ash_typescript RPC controller to unauthenticated internet traffic.

Affected
ash-project ash_typescriptfrom 0.1.0 before 0.18.0
Estimated exposure
nichelikely hundreds to low thousands of backend deployments (specialized Ash-ecosystem Elixir package) — No public install or download counts were provided; this estimate is based on deployment patterns of the Ash Framework, a specialized Elixir ecosystem whose TypeScript RPC bridge is used only by a small subset of backend applications…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

Allocation of Resources Without Limits or Throttling vulnerability in ash-project ash_typescript allows an unauthenticated attacker to exhaust the BEAM atom table and abort the node via client-supplied RPC field names. AshTypescript.FieldFormatter.convert_to_field_atom/2 in lib/ash_typescript/field_formatter.ex converts a client-supplied field name to an atom with String.to_atom/1 when no matching atom already exists. It delegates first to parse_input_field/2, which resolves the name with String.to_existing_atom/1 and falls back to returning the plain string; convert_to_field_atom/2 then mints an atom from that string rather than treating the name as unknown. RPC field selection reaches it for every requested field name through AshTypescript.Rpc.FieldProcessing.FieldSelector, which resolves each name before checking that the field exists, with no allowlist, length bound, or rate limit. Atoms are never garbage collected, so each distinct name mints a permanent one and the VM aborts once the atom table limit is reached. A field name over 255 characters additionally raises an uncaught SystemLimitError. This issue affects ash_typescript: from 0.1.0 before 0.18.0.

Weakness
CWE-770
Vector
CVSS:4.0/AV:N/AC:L/AT:N/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

In the news

No ingested article mentions this CVE yet.