Summary
CVE-2026-77856 is a denial-of-service vulnerability in ash_typescript, an Elixir/Ash Framework library that generates TypeScript RPC clients. Unauthenticated attackers can crash an entire BEAM node by submitting crafted field-name requests that are converted into permanent, unbounded Erlang atoms before validation, eventually exhausting the VM’s atom table. The issue has a CVSS base score of 8.2 (High) and requires no authentication or user interaction to exploit.
Technical details
- Root cause: The
resolve_typed_struct_field/2function inlib/ash_typescript/rpc/field_processing/field_selector.excallsString.to_atom/1to look up client-supplied field names on resources backed byAsh.TypedStruct, and does so before verifying that the field actually exists on the struct. - Why it’s exploitable: In the BEAM VM, atoms are never garbage-collected. Any distinct string converted via
String.to_atom/1permanently consumes atom table space (default limit ~1,048,576 atoms). By repeatedly sending unique, invalid field names, an attacker can drive the atom table to its limit. - Trigger conditions: The target application must expose at least one Ash RPC action operating on a resource that includes a field backed by
Ash.TypedStruct. - Attack vector: Network-based (AV:N), low attack complexity, requires privileges (PR:N) — no authentication needed, and no user interaction is required.
- Impact: Once the atom table is exhausted, the entire BEAM node crashes, causing a complete denial of service for every application running on that node (not just
ash_typescript). Recovery requires a manual node restart. - Note: this issue was not fully addressed by an earlier, similar fix that targeted atom creation in field formatters; the typed-struct field resolution path was a separate, unpatched code path.
Affected software
ash_typescriptversions 0.11.0 through 0.17.x (all versions prior to 0.18.0)
Severity
- CVSS Score: 8.2 (High)
- Vector (CVSS v4.0):
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
(Note: the vendor advisory and CVE record publish this score using the CVSS v4.0 standard rather than v3.1.)
Mitigation and recommended actions
- Immediate: Upgrade
ash_typescriptto version 0.18.0 or later, which validates field existence before any atom conversion occurs. - If immediate patching is not possible:
- Restrict or disable public exposure of RPC actions on Ash resources containing
Ash.TypedStruct-backed fields until the upgrade can be applied. - Monitor BEAM VM atom table usage (e.g., via
:erlang.system_info(:atom_count)) and alert on abnormal growth as an early warning sign of exploitation attempts. - Apply rate limiting or WAF rules to RPC endpoints to reduce the volume of distinct field-name payloads an attacker can submit.
- Restrict or disable public exposure of RPC actions on Ash resources containing

