Skip to content

chore(deps): update dependency storybook to v9.1.19 [security]#891

Open
ham-renovate wants to merge 1 commit intomainfrom
renovate/npm-storybook-vulnerability
Open

chore(deps): update dependency storybook to v9.1.19 [security]#891
ham-renovate wants to merge 1 commit intomainfrom
renovate/npm-storybook-vulnerability

Conversation

@ham-renovate
Copy link
Collaborator

@ham-renovate ham-renovate commented Feb 26, 2026

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
storybook (source) ^8.6.12^9.0.0 age confidence
storybook (source) ^8.6.7^9.0.0 age confidence
storybook (source) 9.1.179.1.19 age confidence

GitHub Vulnerability Alerts

CVE-2026-27148

Summary

The WebSocket functionality in Storybook's dev server, used to create and update stories, is vulnerable to WebSocket hijacking. This vulnerability only affects the Storybook dev server; production builds are not impacted.

Details

Exploitation requires a developer to visit a malicious website while their local Storybook dev server is running. Because the WebSocket connection does not validate the origin of incoming connections, a malicious site can silently send WebSocket messages to the local instance without any further user interaction.

If a Storybook dev server is intentionally exposed publicly (e.g. for design reviews or stakeholder demos) the risk is higher, as no malicious site visit is required. Any unauthenticated attacker can send WebSocket messages to it directly.

The vulnerability affects the WebSocket message handlers for creating and saving stories, which can be exploited via unauthorized WebSocket connections to achieve persistent XSS or Remote Code Execution (RCE).

Note: recent versions of Chrome have some protections against this, but Firefox does not.

Impact

This vulnerability can lead to supply chain compromise. Key risks include:

  • Remote Code Execution: The vulnerability can allow attackers to execute malicious code, with the extent of impact depending on the configuration. Server-side RCE is possible in non-default configurations, such as when stories are executed via portable stories in JSDOM, potentially allowing attackers to exfiltrate credentials and environment variables, access source code and the filesystem, establish backdoors, or pivot to internal network resources.
  • Persistent XSS: Malicious payloads are written directly into story source files. If the malicious payload is committed to version control, it becomes part of the codebase and can propagate to deployed Storybook documentation sites, affecting developers and stakeholders who view them.
  • Supply Chain Propagation: If the modified source files are committed, injected code can spread to other team members via git, execute in CI/CD pipelines, and affect shared component libraries used across multiple projects.

Affected versions

8.1 and above. While the exploitable functionality was introduced in 8.1, the patch has been applied to 7.x as a precautionary measure given the underlying WebSocket behaviour.

Recommended actions

Update to one of the patched versions: 7.6.23, 8.6.17, 9.1.19, 10.2.10.


Release Notes

storybookjs/storybook (storybook)

v9.1.19

Compare Source

9.1.19
  • Harden websocket connection

v9.1.18

Compare Source

9.1.18
  • No-op release. No changes.

v9.1.17

Compare Source

9.1.17

v9.1.16

Compare Source

v9.1.15

Compare Source

v9.1.14

Compare Source

v9.1.13

Compare Source

v9.1.12

Compare Source

  • Maintenance: Hotfix for missing nextjs dts files, thanks @​ndelangen!

v9.1.11

Compare Source

v9.1.10

Compare Source

v9.1.9

Compare Source

  • Angular: Enable experimental zoneless detection on Angular v21 - #​32580, thanks @​yannbf!
  • Svelte: Ignore inherited HTMLAttributes docgen when using utility types - #​32173, thanks @​steciuk!

v9.1.8

Compare Source

v9.1.7

Compare Source

v9.1.6

Compare Source

v9.1.5

Compare Source

v9.1.4

Compare Source

v9.1.3

Compare Source

v9.1.2

Compare Source

v9.1.1

Compare Source

v9.1.0

Compare Source

Storybook 9.1 is packed with new features and improvements to enhance accessibility, streamline testing, and make your development workflow even smoother!

🚀 Improved upgrade command with monorepo support for seamless upgrades
🅰 Angular fixes for Tailwind 4, cache busting, and zoneless compatibility
🧪 sb.mock API and Automocking: one-line module mocking to simplify your testing workflow
🧪 Favicon shows test run status for quick visual feedback
⚛️ Easier configuration for React Native projects
🔥 Auto-abort play functions on HMR to avoid unwanted side effects
🏗️ Improved CSF factories API for type safe story definitions
♿️ A11y improvements across Storybook’s UI — addon panel, toolbar, sidebar, mobile & more
💯 Dozens more fixes and improvements based on community feedback!

List of all updates

v9.0.18

Compare Source

v9.0.17

Compare Source

v9.0.16

Compare Source

v9.0.15

Compare Source

v9.0.14

Compare Source

v9.0.13

Compare Source

v9.0.12

Compare Source

v9.0.11

Compare Source

v9.0.10

Compare Source

v9.0.9

Compare Source

v9.0.8

Compare Source

[!NOTE]
Version 9.0.7 was skipped because of a bad release of eslint-plugin-storybook.

v9.0.6

Compare Source

v9.0.5

Compare Source

v9.0.4

Compare Source

v9.0.3

Compare Source

v9.0.2

Compare Source

v9.0.1

Compare Source

v9.0.0

Compare Source

Storybook 9.0 is here

This is a huge release focused on testing and bundle size.

  • Component testing
    • 👆 Interactions
    • ♿️ Accessibility
    • 👁️ Visual changes
    • 🛡️ Coverage
  • 🪶 48% lighter bundle
  • 🏷️ Tags-based organization
  • 🌐 Story globals
  • 🏗️ Major upgrades: Svelte, Next, React Native, Angular

Please checkout our Migration guide to upgrade from earlier versions of Storybook. To see a comprehensive list of changes that went into 9.0, you can refer to the 9.0 prerelease changelogs

List of all updates

Configuration

📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 26, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b1b1bb6 and e520dc5.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (2)
  • infrastructure/eid-wallet/package.json
  • platforms/pictique/client/package.json
🚧 Files skipped from review as they are similar to previous changes (1)
  • infrastructure/eid-wallet/package.json

📝 Walkthrough

Walkthrough

Storybook devDependency was upgraded from major version 8 to 9 in two package.json files. No functional changes, API, or control-flow modifications were introduced.

Changes

Cohort / File(s) Summary
Storybook Upgrade
infrastructure/eid-wallet/package.json, platforms/pictique/client/package.json
Bumped devDependency storybook from ^8.6.x to ^9.0.0 in both package.json files. No other changes.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Suggested reviewers

  • sosweetham

Poem

🐇 I hopped through package trees so fine,
Upgraded Storybook straight to nine.
Tales unchanged, just a brighter light—
I nibble code and dance tonight! ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and accurately describes the main change: updating Storybook dependency to v9.1.19 with a security focus, directly related to the changeset.
Description check ✅ Passed The PR description comprehensively covers the required sections: it explains the update rationale, references the CVE-2026-27148 security vulnerability with detailed impact analysis, provides affected versions and recommended patches, and includes release notes. While it's auto-generated by Renovate and doesn't follow the template structure exactly, it contains all essential information.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch renovate/npm-storybook-vulnerability

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@infrastructure/eid-wallet/package.json`:
- Line 81: The Storybook dependency versions are inconsistent and do not ensure
the patched release addressing CVE-2026-27148; update the package.json entries
so all Storybook packages use the same patched version (at least 9.1.19) to
avoid major/minor skew. Specifically, change the top-level "storybook"
dependency and every `@storybook/`* entry in this package and in
platforms/pictique/client/package.json to the identical version spec (e.g.,
"9.1.19"), then reinstall (npm/yarn) and verify package-lock / yarn.lock
reflects the unified version and run a security audit to confirm the CVE is
resolved.

In `@platforms/pictique/client/package.json`:
- Line 43: The package.json currently mixes "storybook": "^9.0.0" with
`@storybook/`* packages at ^8.6.12, causing an incompatible major-version
mismatch; update all Storybook packages to a consistent 9.x line (recommend
9.1.19 or later) by changing versions for `@storybook/addon-essentials`,
`@storybook/blocks`, `@storybook/svelte`, `@storybook/sveltekit`, and `@storybook/test`
to 9.1.19 (or later) and remove the now-consolidated packages
`@storybook/addon-essentials` and `@storybook/blocks` from devDependencies (since
core "storybook" 9.x includes them) to resolve the incompatibility and address
CVE-2026-27148.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5e96130 and b1b1bb6.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (2)
  • infrastructure/eid-wallet/package.json
  • platforms/pictique/client/package.json

"playwright": "^1.51.1",
"postcss": "^8.5.3",
"storybook": "^8.6.7",
"storybook": "^9.0.0",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# First check if the package.json file exists and show its Storybook dependencies
echo "=== Checking infrastructure/eid-wallet/package.json ==="
if [ -f "infrastructure/eid-wallet/package.json" ]; then
  cat infrastructure/eid-wallet/package.json | python3 - <<'PY'
import sys, json
data = json.load(sys.stdin)
dev = data.get("devDependencies", {})
sb = {k: v for k, v in dev.items() if k == "storybook" or k.startswith("@storybook/")}
print("Storybook-related dependencies:")
for k, v in sorted(sb.items()):
    print(f"  {k}: {v}")
PY
else
  echo "File not found"
fi

echo ""
echo "=== Checking for lock files ==="
fd -a 'pnpm-lock.yaml|package-lock.json|yarn.lock' | head -20

echo ""
echo "=== Checking lock file for storybook versions ==="
if [ -f "pnpm-lock.yaml" ]; then
  echo "Found pnpm-lock.yaml"
  rg -i 'storybook.*9\.0|@storybook.*8\.6' pnpm-lock.yaml | head -30 || echo "No direct matches found"
fi

Repository: MetaState-Prototype-Project/prototype

Length of output: 874


🏁 Script executed:

# Check the actual lines in the file
if [ -f "infrastructure/eid-wallet/package.json" ]; then
  echo "=== Lines around 59-65 and 81 in package.json ==="
  wc -l infrastructure/eid-wallet/package.json
  echo ""
  echo "Lines 55-70:"
  sed -n '55,70p' infrastructure/eid-wallet/package.json
  echo ""
  echo "Lines 78-85:"
  sed -n '78,85p' infrastructure/eid-wallet/package.json
fi

Repository: MetaState-Prototype-Project/prototype

Length of output: 1106


🏁 Script executed:

# Check if other package.json mentioned in review exists
if [ -f "platforms/pictique/client/package.json" ]; then
  echo "=== platforms/pictique/client/package.json Storybook dependencies ==="
  sed -n '1,100p' platforms/pictique/client/package.json | grep -A 1 -B 1 '"storybook\|"@storybook' || echo "No storybook dependencies found"
fi

echo ""
echo "=== Searching for all package.json files ==="
fd -t f 'package\.json$' | head -20

echo ""
echo "=== Checking for lock files ==="
fd -t f '(pnpm-lock\.yaml|package-lock\.json|yarn\.lock)$'

Repository: MetaState-Prototype-Project/prototype

Length of output: 1553


🌐 Web query:

CVE-2026-27148 Storybook 9.1.19 security update

💡 Result:

CVE-2026-27148 (Storybook) — fixed in Storybook 9.1.19

  • What it is: A WebSocket hijacking issue in the Storybook dev server (used by storybook dev) that can allow an attacker to send unauthorized WebSocket messages (no Origin validation) and potentially achieve persistent XSS or RCE via unsanitized input (e.g., componentFilePath) in story create/save handlers. Production builds are not impacted. [1][2]
  • When it’s exploitable: If a developer visits a malicious website while their local dev server is running; risk is higher if the dev server is exposed publicly. [1][2]
  • Fixed versions: Upgrade to one of 7.6.23, 8.6.17, 9.1.19, or 10.2.10 (depending on your major). [1][2]

Recommended update (for Storybook 9)

  • Upgrade Storybook packages to 9.1.19 (keep all storybook / @storybook/* on the same version). [1]
    • Practical approach: run the Storybook upgrade tool and target 9.1.19 (Storybook documents using npx storybook@... upgrade). [3]

Extra mitigations (if you can’t upgrade immediately)

  • Don’t expose the dev server to untrusted networks; avoid running it publicly for demos/reviews, and be cautious about browsing untrusted sites while it’s running. [1][2]

Sources: GitHub Security Advisory GHSA-mjf5-7g4m-gx5w (CVE-2026-27148) [1], OSV CVE record [2], Storybook upgrade docs [3].

[1] (github.com)
[2] (osv.dev)
[3] (storybook.js.org)

Citations:


Storybook dependencies have version skew and do not enforce the security floor required by CVE-2026-27148.

The storybook: "^9.0.0" constraint does not guarantee the patched version (9.1.19), and this file keeps @storybook/* packages on ^8.6.7, creating a major/minor version mismatch. Per the CVE-2026-27148 security advisory for the WebSocket hijacking vulnerability in the dev server, all Storybook packages must remain on the same version. The same issue affects platforms/pictique/client/package.json (which has @storybook/* at ^8.6.12).

Suggested fix
-        "@storybook/addon-essentials": "^8.6.7",
-        "@storybook/addon-interactions": "^8.6.7",
-        "@storybook/blocks": "^8.6.7",
-        "@storybook/experimental-addon-test": "^8.6.7",
-        "@storybook/svelte": "^8.6.7",
-        "@storybook/sveltekit": "^8.6.7",
-        "@storybook/test": "^8.6.7",
+        "@storybook/addon-essentials": "^9.1.19",
+        "@storybook/addon-interactions": "^9.1.19",
+        "@storybook/blocks": "^9.1.19",
+        "@storybook/experimental-addon-test": "^9.1.19",
+        "@storybook/svelte": "^9.1.19",
+        "@storybook/sveltekit": "^9.1.19",
+        "@storybook/test": "^9.1.19",
@@
-        "storybook": "^9.0.0",
+        "storybook": "^9.1.19",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"storybook": "^9.0.0",
"storybook": "^9.1.19",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@infrastructure/eid-wallet/package.json` at line 81, The Storybook dependency
versions are inconsistent and do not ensure the patched release addressing
CVE-2026-27148; update the package.json entries so all Storybook packages use
the same patched version (at least 9.1.19) to avoid major/minor skew.
Specifically, change the top-level "storybook" dependency and every `@storybook/`*
entry in this package and in platforms/pictique/client/package.json to the
identical version spec (e.g., "9.1.19"), then reinstall (npm/yarn) and verify
package-lock / yarn.lock reflects the unified version and run a security audit
to confirm the CVE is resolved.

"prettier-plugin-svelte": "^3.3.3",
"prettier-plugin-tailwindcss": "^0.7.0",
"storybook": "^8.6.12",
"storybook": "^9.0.0",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

cat -n platforms/pictique/client/package.json | head -50

Repository: MetaState-Prototype-Project/prototype

Length of output: 2030


🌐 Web query:

Storybook 9.0.0 compatibility with @storybook packages version alignment requirements

💡 Result:

Storybook 9.0.0 compatibility / @storybook/* version-alignment rules

  • Don’t mix major versions: If you’re on Storybook 9.0.0, keep Storybook dependencies on 9.x (avoid combinations like storybook@9 with @storybook/*@8, which can lead to “mismatched versions” problems the upgrade/doctor flow explicitly checks for). [3][5]
  • Prefer upgrading as a set: Use the upgrade tool, which updates “all Storybook packages” together and then runs storybook doctor to catch common issues like duplicated deps, incompatible addons, and mismatched versions. [3]
  • Many @storybook/* packages were consolidated into the single storybook package in v9 (and some were removed). If you still list removed/consolidated packages, you should migrate imports to the new storybook/... export paths. [1][2]
  • Addon authors (peer deps): For Storybook 9, addons should generally depend on storybook (not a long list of @storybook/* packages) and set peerDependencies: { "storybook": "^9.0.0" } so the addon uses the host project’s Storybook version and avoids duplicate Storybook copies. [2]
  • Packages that became empty in Storybook 9: @storybook/addon-essentials, @storybook/addon-interactions, @storybook/addon-links, and @storybook/blocks are empty since Storybook 9 and should be removed from dependencies (they’re not published going forward). [4]

Practical recommendation for a SB 9.0.0 app: keep storybook and your framework package (e.g. @storybook/react-vite, @storybook/angular, etc.) on the same 9.x line, run npx storybook@9 upgrade, and fix anything npx storybook doctor reports about mismatched versions. [3]

Sources

[1] Storybook migration guide (8 → 9): package consolidation/removals and new import paths
[2] Addon migration guide for Storybook 9.0: dependency/peerDependency guidance (storybook as peer dep)
[3] Storybook “Upgrading” docs: upgrade upgrades all Storybook packages together + doctor checks mismatched versions
[4] Addon migration guide for Storybook 10.0: notes specific packages are empty since Storybook 9
[5] storybook doctor diagnostics categories: includes version mismatches/peer-dep issues


🌐 Web query:

CVE-2026-27148 Storybook security vulnerability patch version

💡 Result:

For CVE-2026-27148 (Storybook dev server WebSocket hijacking), the vulnerability is fixed in:

  • 7.6.23
  • 8.6.17
  • 9.1.19
  • 10.2.10 (upgrade to this or any later version in the same major line) [1][2]

Align Storybook packages: storybook 9.0.0 mixed with @storybook/ 8.6.12 is incompatible.*

Line 43 specifies "storybook": "^9.0.0" while @storybook/addon-essentials, @storybook/blocks, @storybook/svelte, @storybook/sveltekit, and @storybook/test remain on ^8.6.12. This major version mismatch is unsupported and can cause runtime issues. Additionally, @storybook/addon-essentials and @storybook/blocks were consolidated into storybook 9 and should be removed from devDependencies. Upgrade all Storybook packages to 9.1.19 (or later in the 9.x line) to patch CVE-2026-27148 and remove the consolidated packages.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@platforms/pictique/client/package.json` at line 43, The package.json
currently mixes "storybook": "^9.0.0" with `@storybook/`* packages at ^8.6.12,
causing an incompatible major-version mismatch; update all Storybook packages to
a consistent 9.x line (recommend 9.1.19 or later) by changing versions for
`@storybook/addon-essentials`, `@storybook/blocks`, `@storybook/svelte`,
`@storybook/sveltekit`, and `@storybook/test` to 9.1.19 (or later) and remove the
now-consolidated packages `@storybook/addon-essentials` and `@storybook/blocks` from
devDependencies (since core "storybook" 9.x includes them) to resolve the
incompatibility and address CVE-2026-27148.

@ham-renovate ham-renovate force-pushed the renovate/npm-storybook-vulnerability branch from b1b1bb6 to e520dc5 Compare February 27, 2026 17:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant