Am I affected?

type your ash_typescript version to check

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 typed struct field names.

resolve_typed_struct_field/2 in lib/ash_typescript/rpc/field_processing/field_selector.ex looks a client-supplied field name up in the typed struct's reverse map and, when it finds no match, falls back to String.to_atom/1. Because this runs before any field-existence check, an unresolvable name mints a permanent atom rather than being rejected as unknown. Atoms are never garbage collected, so a request carrying many distinct names on a typed struct field grows the atom table until the VM aborts at its limit.

This issue affects ash_typescript: from 0.11.0 before 0.18.0.

Weaknesses & attack patterns

Weakness

CWE-770 · Allocation of Resources Without Limits or Throttling in catalog → MITRE ↗

Attack patterns

CAPEC-130 · Excessive Allocation MITRE ↗

Affected — Hex / ash_typescript Hex.pm ↗ Repository ↗

0.11.0 < 0.18.0 affected
every other version: unaffected
cpe cpe:2.3:a:ash-project:ash_typescript:*:*:*:*:*:*:*:*
modules · source files · routines
modules 'Elixir.AshTypescript.Rpc.FieldProcessing.FieldSelector' · 'Elixir.AshTypescript.Rpc'
source files lib/ash_typescript/rpc/field_processing/field_selector.ex · lib/ash_typescript/rpc.ex
routines 'Elixir.AshTypescript.Rpc.FieldProcessing.FieldSelector':resolve_typed_struct_field/2 · 'Elixir.AshTypescript.Rpc':run_action/3

Affected — GitHub / ash-project/ash_typescript Repository ↗

7c3d308 < 0ab5c83 affected
every other version: unaffected
cpe cpe:2.3:a:ash-project:ash_typescript:*:*:*:*:*:*:*:*
modules · source files · routines
modules 'Elixir.AshTypescript.Rpc.FieldProcessing.FieldSelector' · 'Elixir.AshTypescript.Rpc'
source files lib/ash_typescript/rpc/field_processing/field_selector.ex · lib/ash_typescript/rpc.ex
routines 'Elixir.AshTypescript.Rpc.FieldProcessing.FieldSelector':resolve_typed_struct_field/2 · 'Elixir.AshTypescript.Rpc':run_action/3

Configurations

The application exposes an AshTypescript RPC endpoint over HTTP and has at least one resource field backed by an Ash.TypedStruct, so that client-supplied names reach resolve_typed_struct_field/2.

References

Credits

Peter Ullrich Finder Reporter
Torkild Gundersen Kjevik / Ash Project Remediation developer
Jonatan Männchen / EEF Coordinator

CVSS breakdown

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
« All CVEs