{"schema":"threatline.record/2","record":{"id":"CVE-2026-8467","aliases":["EEF-CVE-2026-8467","GHSA-55hg-8qxv-qj4p"],"summary":"Unauthenticated remote code execution via HEEx template injection in phoenix_storybook playground","details":"Code Injection vulnerability in phenixdigital phoenix_storybook allows unauthenticated remote code execution via unsanitized attribute value interpolation in HEEx template generation.\n\nThe psb-assign WebSocket event handler in 'Elixir.PhoenixStorybook.Story.PlaygroundPreviewLive':handle_event/3 accepts arbitrary attribute names and values from unauthenticated clients. These values are passed to 'Elixir.PhoenixStorybook.Helpers.ExtraAssignsHelpers':handle_set_variation_assign/3, which stores them verbatim. When rendering, 'Elixir.PhoenixStorybook.Rendering.ComponentRenderer':attributes_markup/1 interpolates binary attribute values directly into a HEEx template string as name=\"<val>\" without escaping double quotes or HEEx expression delimiters. An attacker can supply a value containing a closing quote followed by a HEEx expression block (e.g. foo\" injected={EXPR} bar=\"), which causes EXPR to be treated as an inline Elixir expression. The resulting template is compiled via EEx.compile_string/2 and executed via Code.eval_quoted_with_env/3 with full Kernel imports and no sandbox, giving the attacker arbitrary code execution on the server.\n\nThis issue affects phoenix_storybook from 0.5.0 before 1.1.0.","categories":["Libraries & packages"],"product":"phoenix_storybook","vendor":"phenixdigital","ecosystem":"Hex","affected_ranges":[{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-8467","source_modified_at":"2026-05-27T15:41:02.357Z","fetched_at":"2026-10-27T21:14:11.489891Z","product":"phoenix_storybook","vendor":"phenixdigital","versions":[{"lessThan":"1.1.0","status":"affected","version":"0.5.0","versionType":"semver"}],"defaultStatus":"unaffected"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-8467","source_modified_at":"2026-05-27T15:41:02.357Z","fetched_at":"2026-10-27T21:14:11.489891Z","product":"phoenix_storybook","vendor":"phenixdigital","versions":[{"lessThan":"56ab8464d4375fa52db806148a06cce126ad481d","status":"affected","version":"e35379dfe2ef1a71b141899e36f431017c55265d","versionType":"git"}],"defaultStatus":"unaffected"},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-55hg-8qxv-qj4p","source_modified_at":"2026-06-09T22:15:08.050581956Z","fetched_at":"2026-10-27T21:14:11.489891Z","package":{"name":"phoenix_storybook","ecosystem":"Hex","purl":"pkg:hex/phoenix_storybook"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0.5.0"},{"fixed":"1.1.0"}]}],"versions":["0.5.0","0.5.1","0.5.2","0.5.3","0.5.4","0.5.5","0.5.6","0.5.7","0.6.0","0.6.1","0.6.2","0.6.3","0.6.4","0.7.0","0.7.1","0.7.2","0.8.0","0.8.1","0.8.2","0.8.3","0.9.0","0.9.1","0.9.2","0.9.3","1.0.0"]}],"fixed_versions":[{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-8467","source_modified_at":"2026-05-27T15:41:02.357Z","fetched_at":"2026-10-27T21:14:11.489891Z","package":{"name":"phoenix_storybook","ecosystem":null},"version":"1.1.0","basis":"first unaffected version stated in the CVE record"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-8467","source_modified_at":"2026-05-27T15:41:02.357Z","fetched_at":"2026-10-27T21:14:11.489891Z","package":{"name":"phoenix_storybook","ecosystem":null},"version":"56ab8464d4375fa52db806148a06cce126ad481d","basis":"first unaffected version stated in the CVE record"},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-55hg-8qxv-qj4p","source_modified_at":"2026-06-09T22:15:08.050581956Z","fetched_at":"2026-10-27T21:14:11.489891Z","package":{"name":"phoenix_storybook","ecosystem":"Hex","purl":"pkg:hex/phoenix_storybook"},"version":"1.1.0"}],"cvss":9.5,"severity":"Critical","kev":{"listed":false},"epss":{"probability":0.02111,"percentile":0.81699,"score_date":"2026-10-27"},"published_at":"2026-05-20T13:35:29.018Z","modified_at":"2026-06-09T22:15:08.050581956Z","provenance":[{"source":"CVE List","url":"https://www.cve.org/CVERecord?id=CVE-2026-8467","fetched_at":"2026-10-27T21:14:11.489891Z","source_modified_at":"2026-05-27T15:41:02.357Z"},{"source":"OSV","url":"https://osv.dev/vulnerability/GHSA-55hg-8qxv-qj4p","fetched_at":"2026-10-27T21:14:11.489891Z","source_modified_at":"2026-06-09T22:15:08.050581956Z"},{"source":"EPSS","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-8467","fetched_at":"2026-10-27T21:14:11.489891Z","source_modified_at":"2026-10-27"}],"sources":["CVE List","OSV","EPSS"],"references":[{"source":"CVE List","url":"https://github.com/phenixdigital/phoenix_storybook/security/advisories/GHSA-55hg-8qxv-qj4p","tags":["exploit"]},{"source":"CVE List","url":"https://cna.erlef.org/cves/CVE-2026-8467.html","tags":["related"]},{"source":"CVE List","url":"https://osv.dev/vulnerability/EEF-CVE-2026-8467","tags":["related"]},{"source":"CVE List","url":"https://github.com/phenixdigital/phoenix_storybook/commit/56ab8464d4375fa52db806148a06cce126ad481d","tags":["patch"]}],"locations":[],"motoko_assessment":{"status":"requires_architecture_review","automatic_remediation":false},"cve_state":"PUBLISHED","cvss_source":"CVE List","ssvc":{"exploitation":"poc","automatable":"yes","technical_impact":"total","assessed_at":"2026-05-21T13:57:52.803277Z"},"classification":{"method":"product-first software-layer rules","rules_version":"2.1","matched_on":"ecosystem","confidence":"heuristic","reviewed":false},"change_timestamp":"2026-06-09T22:15:08.050581956Z","content_hash":"ab79e482687642a9f44f702d98929bf1f3cd9a2cec3230e330c9df61787d9e5b"}}
