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.
Published: 2026-09-01
Score: 8.7 High
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

In ash-typescript, the function convert_to_field_atom/2 translates client‑supplied field names into atoms without any upper bound, allowing unlimited atom table growth. Because atoms are never garbage collected, each distinct name permanently uses an entry; once the BEAM atom table limit is reached the virtual machine aborts. A field name longer than 255 characters also triggers an uncaught SystemLimitError, further destabilizing the system. This weakness corresponds to CWE‑770.

Affected Systems

The vulnerability is present in the ash‑project ash_typescript library for all releases from version 0.1.0 up to, but not including, version 0.18.0. Clients that connect to the RPC interface without authentication can trigger the atom creation logic through the FieldSelector path, which processes every requested field name without length checks or allowlists.

Risk and Exploitability

The CVSS score of 8.7 indicates high severity. Although EPSS data is unavailable and the issue is not listed in KEV, the absence of authentication and lack of rate limits make exploitation straightforward. An attacker can send many distinct or very long field names to the RPC endpoint, rapidly exhaust the atom table, and cause the node to crash, potentially impacting all services running on the Erlang VM.

Generated by OpenCVE AI on September 1, 2026 at 03:21 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update ash-typescript to 0.18.0 or later to eliminate the unchecked atom creation.
  • Implement rate limiting or enforce a maximum length on RPC field names and discard names that exceed this limit.
  • Require authentication or restrict RPC access to trusted networks only.

Generated by OpenCVE AI on September 1, 2026 at 03:21 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 01 Sep 2026 02:45:00 +0000

Type Values Removed Values Added
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.
Title Unbounded atom creation from client-supplied RPC field names in AshTypescript field formatter
First Time appeared Ash-project
Ash-project ash Typescript
Weaknesses CWE-770
CPEs cpe:2.3:a:ash-project:ash_typescript:*:*:*:*:*:*:*:*
Vendors & Products Ash-project
Ash-project ash Typescript
References
Metrics cvssV4_0

{'score': 8.7, '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'}


Subscriptions

Ash-project Ash Typescript
cve-icon MITRE

Status: PUBLISHED

Assigner: EEF

Published:

Updated: 2026-09-01T02:09:30.790Z

Reserved: 2026-08-30T17:30:01.398Z

Link: CVE-2026-74837

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-01T03:16:51.187

Modified: 2026-09-01T03:16:51.187

Link: CVE-2026-74837

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-01T03:30:04Z

Weaknesses
  • CWE-770

    Allocation of Resources Without Limits or Throttling