Critical Unauthenticated RCE in PhoenixStorybook via HEEx Template Injection (CVE-2026-8467)
A critical unauthenticated remote code execution vulnerability (CVE-2026-8467) in Phenix Digital's `phoenix_storybook` versions 0.5.0 through 1.0.x allows attackers to inject arbitrary Elixir code via unsanitized WebSocket input, leading to OS command execution.
CVE search metadata
CVE search record: CVE-2026-8467. EPSS: 2.11%. KEV: no. Product: phoenix_storybook (>= 0.5.0, < 1.1.0). Brief: Critical Unauthenticated RCE in PhoenixStorybook via HEEx Template Injection (CVE-2026-8467). Brief link: https://feed.craftedsignal.io/briefs/2026-06-phoenixstorybook-rce/
Triage facts
Revision 1- Applicability
- phoenix_storybook (>= 0.5.0, < 1.1.0)
- Evidence
- Unknown
- Severity
- Critical
- Sources
- 5 public sources
- Freshness
- Revision 1Jun 14, 13:33 UTC
- Detection
- 2 rules
- Vulnerabilities
- 1 CVE
What's new
- 1. poc_available Oct 27, 18:15 via sploitus
A critical unauthenticated remote code execution vulnerability, identified as CVE-2026-8467, affects Phenix Digital's phoenix_storybook library, specifically versions from 0.5.0 up to, but not including, 1.1.0. This flaw lies within the phoenix_storybook playground's handling of HEEx templates, allowing unauthenticated attackers to inject arbitrary Elixir code into a server-side template. The vulnerability leverages unsanitized user-controlled attributes passed via WebSocket connections, leading to direct code execution with full Kernel access. This permits attackers to execute arbitrary operating system commands on the compromised server. The vulnerability requires no authentication or special configuration, making it highly exploitable, especially if the storybook interface is exposed publicly. This poses a severe risk to organizations using affected versions, enabling complete system compromise.
Attack Chain
- Initial Access: An unauthenticated attacker identifies a
phoenix_storybookinstance running versions between 0.5.0 and 1.0.x (e.g., at/storybook/core_components/button) exposed publicly or internally. - WebSocket Connection: The attacker establishes an unauthenticated WebSocket connection to the Phoenix LiveView channel associated with the identified story's Playground tab.
- Malicious Input: The attacker sends a
psb-assignevent via the WebSocket. This event contains a crafted attribute value designed to escape the HEEx attribute context and embed arbitrary Elixir expressions. - Unsanitized Interpolation: The
PhoenixStorybook.Story.PlaygroundPreviewLivecomponent accepts the arbitrary attribute names and values. TheComponentRenderer.attributes_markup/1function then directly interpolates this unsanitized binary value into a HEEx template string (e.g.,~s|#{name}="#{val}"|). - Code Injection: The crafted attribute value uses Elixir's interpolation syntax (e.g.,
foo" injected={EXPR} bar=") to inject a malicious Elixir expression (EXPR) within the HEEx template, bypassing any escaping. - Unsandboxed Compilation: The server compiles the resulting HEEx string (containing the injected Elixir code) via
EEx.compile_string/2. - Unsandboxed Evaluation: The compiled code is then evaluated using
Code.eval_quoted_with_env/3with fullKernelimports and no sandboxing, allowing the malicious Elixir expression to execute. - Remote Code Execution: The injected Elixir expression, typically a
System.cmd/2call (e.g.,System.cmd("bash", ["-c", "whoami"])), executes arbitrary operating system commands on the server with the privileges of the Elixir application process, leading to full system compromise.
Impact
This pre-authentication remote code execution vulnerability allows any unauthenticated user who can reach the phoenix_storybook endpoint to execute arbitrary operating system commands. If the storybook is publicly exposed, internet-facing systems are vulnerable to complete compromise. Successful exploitation grants the attacker full control over the affected server, enabling data exfiltration, deployment of further malware, persistence mechanisms, or integration into botnets. All versions of phoenix_storybook from 0.5.0 before 1.1.0 are vulnerable, potentially impacting a wide range of Elixir applications leveraging this library.
Recommendation
- Immediately patch
phoenix_storybookto version 1.1.0 or later to address CVE-2026-8467. - Deploy the provided Sigma rules to your SIEM and tune for your environment to detect post-exploitation activity resulting from CVE-2026-8467.
- Implement strict network segmentation to restrict access to development/storybook environments, ensuring they are not publicly exposed.
- Enable comprehensive
process_creationlogging on Linux servers running Elixir applications, specifically monitoring for unusual child processes spawned by thebeam.smpprocess.
Detection coverage 2
Detects CVE-2026-8467 Exploitation - Suspicious Child Process from beam.smp
highDetects exploitation of CVE-2026-8467 by monitoring for suspicious child processes spawned directly by the 'beam.smp' (Erlang VM) process, indicative of arbitrary command execution via Elixir's System.cmd/2 function.
Detects Suspicious Script Interpreter Execution with Web-Related Parameters
mediumDetects the execution of common scripting interpreters (bash, python, curl, etc.) with command-line arguments typically associated with web-based RCE, such as downloading files from remote URLs or interacting with network streams, potentially indicating post-exploitation activity or web shell deployment, including from CVE-2026-8467.
Detection queries are available on the platform. Get full rules →