Skip to main content

phoenix_storybook CVE-2026-47068

| EUVDEUVD-2026-31111 LOW
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-05-20 6b3ad84c-e1a6-4bf7-a703-f496b71e49db GHSA-mrhx-6pw9-q5fh
2.3
CVSS 4.0 · Vendor: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify victim's active storybook playground session
  2. Delivery
    Enumerate or predict session-specific PubSub topic name
  3. Exploit
    Load crafted iframe URL with victim topic as query parameter
  4. Execution
    Attacker iframe PID broadcast on victim's PubSub topic
  5. Persist
    Victim playground routes control messages to attacker process
  6. Impact
    Intercept variation state, theme, and assign payloads

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
Exploitation Conditions

A victim user must have an active phoenix_storybook playground session with the playground tab open and a ComponentIframeLive iframe rendered and subscribed to its session-specific PubSub topic - the victim's StoryLive LiveView must be actively awaiting an iframe PID announcement. The attacker must have network access to the same phoenix_storybook instance and must know or successfully enumerate the victim's session-specific topic name; topic names follow the predictable pattern psb-component-iframe-<positive integer> (confirmed by test code), making brute-force enumeration feasible against a running instance. The CVSS AT:P modifier confirms these prerequisite conditions are required. Exploitation is strictly limited to the storybook playground session: confidentiality and integrity of variation state, theme, and extra-assign control messages are affected, but there is no remote code execution, no file system access, and no impact on data or systems outside the storybook playground. Deployments where storybook is restricted to a single trusted developer or an internal-only network are not at realistic risk.

Impact

The CVSS 4.0 score of 2.3 accurately represents a low-severity finding. The vector AV:N/AC:L/AT:P/PR:N/UI:P indicates network-accessible exploitation with no privileges required, but the AT:P (attack target: partial) qualifier is the decisive limiting signal - exploitation depends on a victim having an active playground session, and the attacker must know or predict the victim's session-specific PubSub topic name. Confirmed impact is limited to low confidentiality (VC:L) and low integrity (VI:L) on the vulnerable system, with no availability impact and no subsequent system impact (SC:N/SI:N/SA:N). No EPSS score was provided in the available data. There is no CISA KEV listing and no public exploit code identified, meaning exploitation status is unconfirmed rather than confirmed safe. Real-world exposure is further constrained by phoenix_storybook's typical deployment as a developer-facing documentation tool on internal or restricted networks - organizations that have inadvertently exposed storybook instances to untrusted users on shared staging environments carry the greatest realistic risk. This is not a high-priority remediation for most teams, but multi-user storybook deployments accessible to untrusted parties should upgrade promptly.

Exploit ScenarioDerived

An attacker on a shared development or staging environment where phoenix_storybook is accessible observes or predicts a victim's active playground session topic - topic names follow the pattern psb-component-iframe-<positive integer> as evidenced by the test suite, making enumeration feasible. The attacker loads /storybook/iframe/<any-story>?topic=psb-component-iframe-<guessed-id>, causing their iframe LiveView process PID to be broadcast on the victim's PubSub topic; the victim's StoryLive playground then routes all subsequent control messages (variation state changes, theme switches, extra-assign payloads) to the attacker's process rather than the legitimate iframe. No public exploit code exists at time of analysis.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – May 20, 2026

Cross-session PubSub topic injection in phoenix_storybook (versions 0.4.0 through before 1.1.0) allows a remote unauthenticated attacker to redirect a victim's playground control messages to an attacker-controlled LiveView iframe process. The vulnerability exists because ComponentIframeLive reads the PubSub coordination topic verbatim from a URL query parameter with no session-binding validation, enabling an attacker who loads a crafted iframe URL to hijack variation state changes, theme switches, and extra-assign payloads intended for a victim's active playground session. No public exploit code exists and no CISA KEV listing is present; the CVSS 4.0 score of 2.3 reflects genuinely low severity given the prerequisites required.

RemediationAI

Upgrade phoenix_storybook to version 1.1.0 or later by updating mix.exs to specify {:phoenix_storybook, ">= 1.1.0"} and running mix deps.update phoenix_storybook. The fix is confirmed in commit 6ee03f1c at https://github.com/phenixdigital/phoenix_storybook/commit/6ee03f1c738d4436dde1b066cf65c80663d489f5, which introduces signed token verification for the playground topic parameter. If an immediate upgrade is not feasible and the storybook instance is not restricted to trusted users, restrict network access to the /storybook route at the reverse proxy level (e.g., nginx allow/deny directives or WAF IP allowlisting) - this eliminates the network-accessible attack vector without code changes, though it prevents any external access to the storybook interface. Note that exposing phoenix_storybook publicly is generally inadvisable regardless of this CVE. Full advisory details are at https://github.com/phenixdigital/phoenix_storybook/security/advisories/GHSA-mrhx-6pw9-q5fh.

Affected VersionsENISA

phoenix_storybook 8c2c97b0f505780fee4069988bf86736f51d35d7 <6ee03f1c738d4436dde1b066cf65c80663d489f5
phoenix_storybook 0.4.0 <1.1.0

Affected Packages

euvd phoenix_storybook fix: 1.1.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

phoenix_storybook is an Elixir Hex package that builds interactive component documentation playgrounds on top of Phoenix LiveView and Phoenix PubSub. The playground architecture uses a shared PhoenixStorybook.PubSub bus to coordinate between a parent StoryLive LiveView and an embedded ComponentIframeLive iframe: the iframe announces its process PID on a session-specific topic so the playground can direct control messages via Elixir send/2. The root cause is CWE-639 (Authorization Bypass Through User-Controlled Key) - handle_params/3 in component_iframe_live.ex consumed params["topic"] directly from the URL without verifying that the topic was generated by, or belongs to, the requesting session. The fix confirmed in commit 6ee03f1c replaces the raw topic query parameter with a cryptographically signed Phoenix.Token (salt: "phoenix_storybook:playground_topic", max_age: 86,400 seconds), ensuring only a server-generated token can authorize a topic binding. The parameter was renamed from "topic" to "playground_token" to make the change explicit at the protocol level.

Know when the next one hits your stack

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (6b3ad84c-e1a6-4bf7-a703-f496b71e49db) PRIMARY 2.3 LOW
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (6b3ad84c-e1a6-4bf7-a703-f496b71e49db) · only source for this CVE.

CVSS VectorVendor: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
May 20, 2026 - 15:17 EUVD

DescriptionCVE.org

Authorization Bypass Through User-Controlled Key vulnerability in phenixdigital phoenix_storybook allows cross-session PubSub topic injection via a URL query parameter.

'Elixir.PhoenixStorybook.Story.ComponentIframeLive':handle_params/3 in lib/phoenix_storybook/live/story/component_iframe_live.ex reads a PubSub topic directly from params["topic"] and broadcasts {:component_iframe_pid, self()} on it with no check that the topic belongs to the requesting session. The shared PhoenixStorybook.PubSub is used to coordinate playground LiveViews with their iframes: a playground subscribes to a session-specific topic and uses the received iframe pid to direct subsequent control messages (variation state, theme switches, extra-assign payloads) via send/2. Because the iframe trusts the query parameter, an attacker who loads /storybook/iframe/<story>?topic=<victim_topic> causes their iframe process pid to be announced on the victim's topic. The victim's playground then addresses its private messages to the attacker's iframe process.

This issue affects phoenix_storybook from 0.4.0 before 1.1.0.

Threat Intelligence Overview

EPSS Score
0.0%
Top 88% exploitable
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA CIRCL GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity LOW
CISA KEV No
Public POC Yes
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +12
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy