CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-47068

CVE-2026-47068: Authorization Bypass via Cross-Session PubSub Topic Injection in phoenix_storybook

Amit Schendel
Amit Schendel
Senior Security Researcher

Jun 9, 2026·4 min read·49 visits

Executive Summary (TL;DR)

Unauthenticated remote attackers can hijack active phoenix_storybook sessions by supplying a victim's PubSub topic via URL parameters, leading to potential cross-session state exposure.

A security vulnerability in the Elixir package phoenix_storybook (versions 0.4.0 up to 1.1.0) allows unauthenticated remote attackers to perform cross-session PubSub topic injection. By manipulating URL parameters, an attacker can hijack the real-time communications channel, enabling them to capture user state and control parameters from active sessions.

Vulnerability Overview

The Elixir package phoenix_storybook is an interactive catalog designed to showcase and test Phoenix components. To maintain isolated styling scopes and avoid JavaScript pollution, the application loads component previews within nested <iframe> elements.

To synchronize the UI states (such as configuration variations, color modes, and themes) between the parent playground LiveView and the nested iframe LiveView, the application uses an Elixir-native Phoenix.PubSub server (PhoenixStorybook.PubSub).

The component iframe exposes an attack surface by reading communication parameters directly from the client. Unauthenticated users can exploit this behavior because the application fails to validate the ownership or integrity of these parameters, leading to an authorization bypass.

Root Cause Analysis

The root cause is a CWE-639 (Authorization Bypass Through User-Controlled Key) flaw. When the parent LiveView (StoryLive) mounts, it establishes a session-specific PubSub topic based on its process identifier (PID): playground_topic = "playground-#{inspect(self())}".

The parent then references this topic in the query parameters when rendering the iframe: /storybook/iframe/<story_name>?topic=playground-#PID<0.1234.0>.

Inside the iframe, the ComponentIframeLive LiveView extracts this parameter during the handle_params/3 lifecycle stage and immediately broadcasts its own process identifier (PID) to that topic without verifying session ownership. Any client can supply an arbitrary topic string, forcing the iframe process to broadcast itself to that channel.

Code Diff & Architecture Analysis

The vulnerability was fixed in commit 6ee03f1c738d4436dde1b066cf65c80663d489f5 by replacing the plain text topic parameter with a cryptographically signed token generated via Phoenix.Token.

Prior to the patch, the application parsed the raw topic from the URL params and executed PubSub.broadcast!/3:

# VULNERABLE APPROACH
if params["topic"] do
  PubSub.broadcast!(
    PhoenixStorybook.PubSub,
    params["topic"],
    {:component_iframe_pid, self()}
  )
end

The updated implementation extracts a playground_token parameter and verifies it against the application's secure endpoint:

# PATCHED APPROACH
topic = verified_playground_topic(socket, params["playground_token"])
if topic do
  PubSub.broadcast!(
    PhoenixStorybook.PubSub,
    topic,
    {:component_iframe_pid, self()}
  )
end

This cryptographic verification ensures that only tokens signed by the parent application (using the server's secret_key_base) can specify a target communication channel.

Exploitation & Attack Flow

Exploitation relies on predicting or intercepting the target victim's parent LiveView PID, which acts as the PubSub topic. In Elixir/BEAM systems, process identifiers are allocated sequentially, making them predictable in environments with low process churn.

An attacker crafts a URL targeting the storybook's iframe endpoint, appending the victim's estimated topic string: https://example.com/storybook/iframe/component?topic=playground-%23PID%3C0.1432.0%3E.

When the attacker loads this URL, their iframe LiveView broadcasts its process identifier (PID) to the victim's topic. The victim's parent LiveView accepts this spoofed PID. As a result, when the victim interacts with the UI, their private states, mock payloads, or theme selections are sent directly to the attacker's iframe process, triggering a cross-session information exposure.

Impact Assessment

The impact is classified as Low (CVSS 2.3) due to several restrictive prerequisites. The attack does not lead to direct Remote Code Execution (RCE) or complete system compromise. Instead, the consequences are restricted to cross-session information disclosure and unauthorized UI state manipulation.

An attacker can capture private mock variables, custom input attributes, and user-configured states intended only for the victim's display. No persistent changes are made to the database, and there is no direct impact on service availability.

Remediation & Hardening

To address this vulnerability, administrators should upgrade phoenix_storybook to version 1.1.0 or higher. This version deprecates the plain topic parameter in favor of signed tokens.

If upgrading immediately is not feasible, implement a manual code patch. Define a cryptographic salt and apply Phoenix.Token.verify/4 on incoming request parameters in lib/phoenix_storybook/live/story/component_iframe_live.ex.

Ensure that your application's secret_key_base is securely configured and rotated regularly, as the patch's cryptographic integrity depends entirely on the secrecy of this key.

Fix Analysis (1)

Technical Appendix

CVSS Score
2.3/ 10
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
EPSS Probability
0.05%
Top 83% most exploited

Affected Systems

phoenix_storybook package for Elixir

Affected Versions Detail

Product
Affected Versions
Fixed Version
phoenix_storybook
phenixdigital
>= 0.4.0, < 1.1.01.1.0
AttributeDetail
CWE IDCWE-639
Attack VectorNetwork
CVSS Score2.3 (Low)
EPSS Score0.00054
Exploit StatusNo active public exploits
KEV StatusNot listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
CWE-639
Authorization Bypass Through User-Controlled Key

The system uses actor-controlled keys to access resources, allowing an attacker to bypass authorization by providing a key belonging to another user.

References & Sources

  • [1]https://github.com/phenixdigital/phoenix_storybook/security/advisories/GHSA-mrhx-6pw9-q5fh
  • [2]https://github.com/phenixdigital/phoenix_storybook/commit/6ee03f1c738d4436dde1b066cf65c80663d489f5

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•9 days ago•CVE-2026-87697
8.8

CVE-2026-87697: Untrusted Deserialization in .NET PresentationCore Clipboard Handling

A remote code execution vulnerability exists in Microsoft .NET due to untrusted data deserialization within the PresentationCore component. The flaw stems from implicit auto-conversion flags during clipboard data retrieval operations.

Alon Barad
Alon Barad
30 views•5 min read
•9 days ago•CVE-2026-70007
8.8

CVE-2026-70007: Out-of-Bounds Write Vulnerability in .NET Framework and WPF Subsystem

An out-of-bounds write vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio allows unauthenticated remote attackers to execute arbitrary code via crafted pixel-shader bytecode or auto-converted clipboard payloads.

Amit Schendel
Amit Schendel
18 views•6 min read
•9 days ago•CVE-2026-70186
7.5

CVE-2026-70186: ASP.NET Core Denial of Service Vulnerability via Framework Deadlock

ASP.NET Core contains a thread deadlock vulnerability (CWE-833) that allows an unauthenticated remote attacker to cause a denial of service over the network by exhausting server thread pool resources.

Amit Schendel
Amit Schendel
17 views•5 min read
•9 days ago•CVE-2026-70035
8.8

CVE-2026-70035: Insecure Deserialization Remote Code Execution in Microsoft .NET Framework and .NET Runtime

CVE-2026-70035 is a high-severity Remote Code Execution (RCE) vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio caused by improper handling during the deserialization of untrusted data (CWE-502). An unauthenticated attacker can execute arbitrary code within the context of the affected process by delivering a crafted serialized payload.

Amit Schendel
Amit Schendel
23 views•6 min read
•9 days ago•CVE-2026-70183
7.5

CVE-2026-70183: Elevation of Privilege in ASP.NET Core and Visual Studio via Concurrent Race Condition

An elevation of privilege vulnerability exists in ASP.NET Core and Microsoft Visual Studio due to improper synchronization during concurrent thread execution. Authenticated remote attackers with low privileges can exploit a timing window to manipulate shared resources and assume higher-level execution contexts.

Alon Barad
Alon Barad
20 views•5 min read
•12 days ago•CVE-2026-107844
5.3

CVE-2026-107844: Path Traversal Vulnerability in Contao ImagesController

A path traversal vulnerability (CWE-22) in Contao CMS allows unauthenticated remote attackers to bypass directory boundary restrictions in ImagesController and access files within the project directory.

Amit Schendel
Amit Schendel
23 views•5 min read