CVE-2026-74837Patch

LOWCVSS 8.7 · HIGH

Signal is active with 1 mentions in latest observed window

Immediate actions

  • Patch affected systems immediately

Recommended action window: Monitor and triage in normal cycle

NVD 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.

0.5/ 10 priority

Sources & remediation

Weakness type (CWE)
CWE-770

Priority

LOW

Exploitation

NONE

PoC

NONE

Patch

AVAILABLE

Momentum

NONE

Threat summary

  • Patch or workaround signal is available
  • 1 mentions across 1 observed day

What's happening

  • Patch or workaround mentioned in 1 signal
  • Technical details provided in 1 signal
  • 1 total mentions across 1 day

Deep dive

Activity timeline1 mentions / 1d
00111Mentions · 2026-09-01: 1Patch / Workaround · 2026-09-01: 1Technical Details · 2026-09-01: 109-01
Signal classification1 categories
Patch
1100.0%
Referenced assets2 URLs
By indicator
Full discourse1 post
  • CyberSignal | Cybersecurity & AI News@XQOPTRX
    Patch

    🚨 [UNAUTHENTICATED DoS] — A NEW ASHTYPESCRIPT FLAW LETS REMOTE ATTACKERS PERMANENTLY FILL THE BEAM VM'S ATOM TABLE UNTIL THE ENTIRE NODE ABORTS CVE-2026-74837 scores 8.7/10. The vulnerable RPC field-selection logic creates permanent Erlang/Elixir atoms from attacker-controlled field names BEFORE verifying whether those fields even exist. CyberSignal Priority: 🔴 HIGH 📅 Published: September 1, 2026 🆔 CVE-2026-74837 ⚠️ CVSS 4.0: 8.7 HIGH 🎯 ash-project / ash_typescript 🛠️ Fixed: 0.18.0 🏷️ Elixir · BEAM · DoS · API Security · Resource Exhaustion This vulnerability abuses something unusual about the Erlang/Elixir runtime: ### **atoms are not garbage collected.** Create enough of them— and eventually: **the VM dies.** ### 🔎 What happened A newly published vulnerability affects: `ash_typescript` before: **0.18.0.** The vulnerable component processes field names supplied through: AshTypescript RPC endpoints. The problem exists in: `AshTypescript.FieldFormatter.convert_to_field_atom/2`. When a client supplies a field name that does not already correspond to an existing atom, the implementation can eventually call: `http://String.to_atom/1` on the attacker-controlled string. That creates a new: ### BEAM atom. The application performs this conversion BEFORE sufficiently validating that the requested field actually exists. ### ⚔️ Attack chain Internet/API client ↓ Sends RPC request ↓ Request contains unique fake field name ↓ AshTypescript processes field selection ↓ No matching existing atom found ↓ `http://String.to_atom()` creates new atom ↓ Attacker repeats with another unique name ↓ Another permanent atom created ↓ Again ↓ Again ↓ Atom table fills ↓ BEAM VM reaches atom-table limit ↓ ### Node aborts. No authentication: **required.** No user interaction: **required.** Attack complexity: **LOW.** ### 🧠 Why atoms are different In Erlang and Elixir: atoms are commonly used for fixed identifiers such as: `:ok` `:error` `:admin` `:email`. They are intentionally efficient. But they have an important property: ### atoms persist for the life of the VM. They are not handled like normal temporary strings. If an application does this: User input ↓ `http://String.to_atom(user_input)` an attacker may continuously create: `:aaaa1` `:aaaa2` `:aaaa3` `:aaaa4` ... Each new value consumes another atom-table entry. The memory may be small per entry. But the number of entries is: **finite.** Once the table is exhausted: the BEAM VM can terminate. ### 💥 There's another crash path The advisory also notes that attacker-controlled field names longer than: **255 characters** can trigger an uncaught: `SystemLimitError`. So defenders face two resource-abuse paths: many unique field names → atom-table exhaustion OR oversized field name → unhandled runtime error. ### 🎯 What is affected Affected: `ash_typescript` from: **0.1.0** through versions before: ### **0.18.0.** The vulnerable path matters when applications expose: AshTypescript RPC functionality over HTTP such that: client-controlled field names reach: `http://AshTypescript.Rpc.run_action/3`. Not every Elixir application is affected. This is specific to applications using the vulnerable: ash_typescript functionality. ### 🧠 Why this matters This is a good example of how language/runtime semantics become: security boundaries. In another runtime: arbitrarily creating strings might mostly create: memory pressure. In BEAM: dynamically creating atoms from arbitrary external input has historically been considered dangerous because: ### atoms are permanent. The secure pattern is usually: `http://String.to_existing_atom()` or an explicit: allowlist/map when converting untrusted input. ### ⚠️ Important caveat This is NOT: remote code execution. The primary security impact is: ### availability. Successful exploitation can crash the vulnerable node. There is also currently no verified evidence of: active exploitation in the wild. CISA KEV: ❌ not listed. The severity comes from the combination: network accessible + unauthenticated + low complexity + potential complete service termination. ### 🛡️ Defender action If your environment uses: `ash_typescript` upgrade to: ### **0.18.0 or later.** Also review APIs for unsafe patterns involving: `http://String.to_atom(untrusted_input)`. Defensive pattern: external string ↓ validate against expected fields ↓ map to existing atom ↓ reject unknown value. NOT: external string ↓ create new atom ↓ check later. Add: API rate limits ↓ field-name length limits ↓ schema validation ↓ process/node restart monitoring. Security teams running Elixir applications should also alert on: unexpected BEAM node restarts and: repeated malformed RPC field requests. ### 🧠 CyberSignal insight **Sometimes the vulnerability isn't memory corruption — it's misunderstanding the language runtime. In BEAM, turning unlimited attacker-controlled strings into permanent atoms can turn an ordinary API request into a kill switch.** Sources: Erlang Ecosystem Foundation CNA · CVE-2026-74837 · ash-project security advisory

    Post summary

    The advisory details a new CVE‑2026‑74837 DoS flaw in AshTypescript, explains its technical mechanics, and recommends upgrading to v0.18.0 or later to remediate the issue.

    00000123
    185 followersView on X

Explore more