Live Exposure Defense: From CVE to Confirmed Exposure in 12 Hours – See more

New CVE Detected

CVE-2026-94201 – Denial of Service (Atom Table Exhaustion) – Ash Framework 3.5.1 through 3.34.2

Be the first to know when new zero-days emerge:

Summary

CVE-2026-94201 is a denial-of-service vulnerability in the Ash Framework, a data layer and application framework for Elixir, caused by uncontrolled atom creation when filtering on :atom-typed resource attributes. An unauthenticated or low-privileged remote actor who can supply filter values to a public, filterable atom attribute can force the application to permanently exhaust the BEAM virtual machine’s finite atom table, crashing the node. The issue carries a CVSS score of 8.2 (High) and affects Ash versions 3.5.1 through 3.34.2.

Technical details

  • Root cause: Ash.Type.Atom did not implement a coerce/2 callback. When an attacker-controlled value was filtered against an atom attribute configured with unsafe_to_atom?: true, Ash’s filter-coercion path fell back to cast_input/2, which calls Elixir’s String.to_atom/1.
  • Why it’s dangerous: In the BEAM (Erlang VM) runtime, atoms are never garbage collected and the atom table has a fixed maximum size. Calling String.to_atom/1 on attacker-supplied, non-repeating strings permanently interns a new atom for every distinct filter value submitted.
  • Trigger conditions: A resource must expose a public, filterable :atom attribute with the unsafe_to_atom?: true constraint, reachable through a query interface such as AshGraphql, AshJsonApi, or Ash.Query.filter_input/2.
  • Notably exposed component: AshPaperTrail version resources are especially at risk, since their default version_action_name attribute is an atom attribute configured with unsafe_to_atom?: true out of the box.
  • Attack vector: Network — no authentication beyond the ability to submit filter parameters is required, and no user interaction is needed.
  • Impact: Repeated submission of unique filter values exhausts the BEAM atom table, ultimately crashing the Erlang VM and taking down the entire application node (availability impact only; no confidentiality or integrity impact).

Affected software

  • Package: ash (Hex/Elixir), vendor ash-project
  • Vulnerable versions: 3.5.1 through 3.34.2
  • Fixed version: 3.34.3 and later
  • Affected module: Ash.Type.Atom (lib/ash/type/atom.ex)
  • Applications using Ash resources with public, filterable :atom attributes configured with unsafe_to_atom?: true (including deployments using AshPaperTrail’s default version resource configuration) are at heightened risk.

Severity

  • CVSS Score: 8.2 (High)
  • CVSS Vector: 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
  • CWE-770: Allocation of Resources Without Limits or Throttling

Mitigation and recommended actions

  • Immediate: Upgrade ash to version 3.34.3 or later, which adds a coerce/2 callback to Ash.Type.Atom that avoids interning new atoms during filtering while preserving existing unsafe_to_atom? behavior for direct attribute assignment.
  • If immediate patching is not possible:
    • Audit resources for public, filterable :atom attributes with unsafe_to_atom?: true, and restrict or remove filter access on these attributes until patched.
    • Pay particular attention to AshPaperTrail-generated version resources, which expose this configuration by default.
    • Monitor BEAM atom table usage/consumption metrics and application availability for signs of exploitation attempts.

References

Are you exposed?

Get a free report of your organization’s exposure to this CVE and threat

How IONIX’s External Exposure Management Platform Detects and Validates
Zero-Days to Shrink MTTR

1

Map your entire attack surface (continously)

IONIX uses multi-factor discovery methods, including DNS analysis, certificate mapping, metadata inspection, and more, to automatically map every internet-facing asset across your environment. This includes cloud instances, third-party platforms, shadow IT, and even forgotten infrastructure that traditional tools miss.

2

Monitor for new CVEs

Dozens of threat intel feeds using agentic technology are continuously analyzed to detect the appearance of proof-of-concept code, exploit kits, and indicators of active targeting. IONIX goes further by applying AI to proactively evaluate whether emerging vulnerabilities are likely to be exploited, even before PoCs go public.

3

Identify Potential External Exposures

Not all CVEs matter. IONIX filters vulnerabilities by asking attacker-centric questions: Can it be reached from the internet? Does it require authentication? Is it being exploited in the wild? This dramatically reduces noise and focuses teams on threats that can actually be weaponized.

4

Create Safe, Scalable Exploit Validations

IONIX transforms real-world PoCs into safe, non-intrusive test payloads that can be run in production environments without disruption. These simulations are precisely targeted to the systems that are vulnerable, ensuring rapid validation without unnecessary load.

5

Execute Exploit Validations

By combining context about software stack, versioning, exposure status, and reachability, IONIX ensures that only the right payloads are executed against the right assets, maximizing efficiency and minimizing risk.

6

Drive Fast and Actionable Remediation

Results are routed through integrations with ticketing, SOAR, and SIEM tools. Issues are written in plain language, bundled into remediation clusters, and prioritized based on asset criticality, exploitability, and blast radius. This shortens mean time to remediation (MTTR) and empowers teams to act with confidence.

Are you exposed?

Get a free report of your organization’s exposure to this CVE and threat

Subscribe to Threat Center RSS

Copy/paste the link below into your preferred RSS reader or follow these instructions to subscribe to Slack alerts.

Get Real-Time CVE Alerts to Your Email

Be the first to know when new zero-days emerge