Description
Allocation of Resources Without Limits or Throttling vulnerability in phenixdigital phoenix_storybook allows unauthenticated denial-of-service via BEAM atom table exhaustion.

Multiple LiveView event handlers convert user-supplied event parameter strings to atoms using String.to_atom/1 without validation: 'Elixir.PhoenixStorybook.ExtraAssignsHelpers':handle_set_variation_assign/3 interns every key of the psb-assign params map; 'Elixir.PhoenixStorybook.ExtraAssignsHelpers':handle_toggle_variation_assign/3 interns the "attr" value from psb-toggle events; 'Elixir.PhoenixStorybook.ExtraAssignsHelpers':to_variation_id/2 interns elements of "variation_id"; and 'Elixir.PhoenixStorybook.ExtraAssignsHelpers':to_value/4 interns raw string values for attributes declared as :atom or :boolean. BEAM atoms are never garbage-collected, so each unique attacker-controlled string is a permanent allocation. Once the atom table ceiling (~1,048,576 atoms) is reached, the entire BEAM node aborts, taking down all applications running on it.

This issue affects phoenix_storybook from 0.2.0 before 1.1.0.
Published: 2026-05-20
Score: 8.2 High
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability arises from unchecked conversion of user‑provided strings to BEAM atoms in several LiveView event handlers. BEAM atoms are permanent and not garbage‑collected. An attacker can send a large number of unique strings, quickly exhausting the atom table, which has a fixed ceiling of around one million entries. When the table overflows, the BEAM node aborts, immediately terminating all applications running on it. This results in an immediate denial of service to any process relying on the affected node.

Affected Systems

The flaw affects versions of the PhoenixStorybook application from 0.2.0 up to, but not including, 1.1.0. All deployments running these versions, regardless of other software installed on the same BEAM node, are at risk because the atom table is shared across the entire virtual machine.

Risk and Exploitability

With a CVSS score of 8.2, this issue presents a high severity risk. No EPSS score is publicly available, so the exact current exploitation probability cannot be quantified, but the vulnerability permits unauthenticated exploitation over any interface that delivers LiveView event payloads, such as web pages. Once triggered, the atom table exhaustion takes down the entire BEAM node, and there is no built‑in mitigation; the affected application must be updated or configured to restrict atom creation. The vulnerability is not listed in CISA KEV, yet the lack of throttling and permanent atom allocation make exploitation straightforward for a motivated attacker.

Generated by OpenCVE AI on May 20, 2026 at 15:22 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade PhoenixStorybook to version 1.1.0 or later.
  • Replace unsafe String.to_atom/1 calls with validation or String.to_existing_atom/1 and restrict input strings in LiveView event handlers.
  • Implement monitoring of atom table usage and rate‑limit incoming event traffic to prevent atom exhaustion before the table reaches its ceiling.

Generated by OpenCVE AI on May 20, 2026 at 15:22 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 20 May 2026 14:15:00 +0000

Type Values Removed Values Added
Description Allocation of Resources Without Limits or Throttling vulnerability in phenixdigital phoenix_storybook allows unauthenticated denial-of-service via BEAM atom table exhaustion. Multiple LiveView event handlers convert user-supplied event parameter strings to atoms using String.to_atom/1 without validation: 'Elixir.PhoenixStorybook.ExtraAssignsHelpers':handle_set_variation_assign/3 interns every key of the psb-assign params map; 'Elixir.PhoenixStorybook.ExtraAssignsHelpers':handle_toggle_variation_assign/3 interns the "attr" value from psb-toggle events; 'Elixir.PhoenixStorybook.ExtraAssignsHelpers':to_variation_id/2 interns elements of "variation_id"; and 'Elixir.PhoenixStorybook.ExtraAssignsHelpers':to_value/4 interns raw string values for attributes declared as :atom or :boolean. BEAM atoms are never garbage-collected, so each unique attacker-controlled string is a permanent allocation. Once the atom table ceiling (~1,048,576 atoms) is reached, the entire BEAM node aborts, taking down all applications running on it. This issue affects phoenix_storybook from 0.2.0 before 1.1.0.
Title Unauthenticated denial-of-service via BEAM atom table exhaustion in phoenix_storybook
First Time appeared Phenixdigital
Phenixdigital phoenix Storybook
Weaknesses CWE-770
CPEs cpe:2.3:a:phenixdigital:phoenix_storybook:*:*:*:*:*:*:*:*
Vendors & Products Phenixdigital
Phenixdigital phoenix Storybook
References
Metrics cvssV4_0

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


Subscriptions

Phenixdigital Phoenix Storybook
cve-icon MITRE

Status: PUBLISHED

Assigner: EEF

Published:

Updated: 2026-05-20T13:35:27.914Z

Reserved: 2026-05-13T11:44:43.316Z

Link: CVE-2026-8469

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Deferred

Published: 2026-05-20T14:17:04.447

Modified: 2026-05-20T14:23:14.993

Link: CVE-2026-8469

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-05-20T15:30:33Z

Weaknesses