WORK.SIGNALALL SIGNALS
/ 仕事 / DEEP DIVE

開発者のPCが狙われる。Storybookに緊急脆弱性、開発サーバーの起動に注意

94 / 100SIGNAL DEEP DIVE仕事約4分で読める

Storybookの開発サーバーにCritical 9.4とHigh 8.7の脆弱性。悪意あるWebサイトや同じネットワーク上の第三者を起点に、開発ファイルの改ざん、条件次第でコード実行の恐れがある。修正版と企業の点検事項を解説。

30秒でわかる / THE SIGNAL

Storybookの開発サーバーで、悪意あるWebサイトからの操作(CVE-2026-114125、Critical 9.4)と同一LANからのWebSocket認証情報取得(CVE-2026-114126、High 8.7)が問題に。修正版は8.6.19/9.1.21/10.6.2/11.0.0-alpha.6。影響する開発サーバーの起動を止め、更新とネットワーク設定を確認したい。

何が起きた? 開発中のStorybookが攻撃の入口に

UIコンポーネントの開発・確認に使われるStorybookで、開発サーバーに関する2件の重大脆弱性が報告された。2026年10月12日付で公開された開発元のアドバイザリは、CVE-2026-114125(Critical、CVSS v4.0 9.4)とCVE-2026-114126(High、CVSS v4.0 8.7)。いずれも本番公開した静的Storybookの閲覧そのものではなく、開発者が起動するStorybook devサーバーに関係する。

開発者のPCはソースコード、認証情報、開発用ツールへのアクセス権を持つ場合がある。開発サーバーが攻撃されると、Webサイトの本番環境とは別の経路で開発資産が危険にさらされ得る。

脆弱性① 悪意あるWebサイトからのコード注入

CVE-2026-114125(GHSA-f2ph-cmg5-wxc8)は、Storybookのpreviewにおける送信元検証の不備などを悪用する問題だ。開発者が脆弱なStorybook devサーバーを起動している状態で、攻撃者のWebサイトを開くと、特定条件下でプロジェクトのファイルが不正に変更される可能性がある。改変されたファイルがローカルの実行環境で動くと、開発者権限でコードが実行される恐れがある。

ただし、コード実行は追加条件を要する最悪のケースであり、単に悪意あるページを開いただけで必ず任意コードが実行されるという意味ではない。開発元は実環境での悪用を把握していないと説明している。

脆弱性② 同じネットワークからWebSocketトークンを取得

CVE-2026-114126(GHSA-px85-f4q5-jh77)は、Storybook devサーバーのHTMLを取得できるネットワーク上の端末が、WebSocket認証トークンを得られる問題だ。トークンを悪用するとstoryファイルへのコード注入や新規ファイル作成が可能となり、条件次第で開発者のPC上でコードが実行され得る。

不特定多数が接続するWi-Fiや、LAN内の別端末から開発サーバーに到達できる設定は特に注意したい。一方、ポートを公開しないコンテナや127.0.0.1のみにバインドされた環境では、このLAN経由の攻撃経路は成立しにくい。

影響バージョンと修正版

Storybook本体(storybookパッケージ)では、8.0.0以上8.6.19未満、9.0.0以上9.1.21未満、10.0.0以上10.6.2未満、11.0.0-alpha.0以上alpha.6未満が対象。修正版は8.6.19/9.1.21/10.6.2/11.0.0-alpha.6。@storybook/coreなど関連パッケージの影響範囲はそれぞれ異なるため、公式アドバイザリのパッケージ別一覧も確認する。

Storybook開発元は、修正版の適用前に影響するstorybook devサーバーを起動しないよう勧めている。すでに静的ビルドしたStorybookは、今回のdevサーバー固有の問題の対象外だ。

企業・開発チームが確認したい4項目

第一に、各プロジェクトでStorybookを利用しているか、package.jsonやロックファイルでバージョンを確認する。CI/CDだけでなく、開発者個人のPCや検証環境も対象に含めたい。

第二に、修正版へ更新する。Storybook 8系は8.6.19、9系は9.1.21、10系は10.6.2、11系alphaはalpha.6以降が目安だ。関連するVite・Vitestにも脆弱性があるため、公式が推奨するVite 6.4.2/7.3.2/8.0.5以降、Vitest 3.2.7/4.1.10以降への更新も確認する。

第三に、開発サーバーの公開範囲を確認する。修正版では原則として127.0.0.1のみで待ち受ける。--host 0.0.0.0などを利用する場合はホスト名の許可設定とファイアウォールを検討し、不特定多数が接続するネットワークでの公開を避ける。

第四に、修正による動作変更をテストする。外部サイトへのiframe埋め込みやpostMessage連携など、従来の開発フローが変わる場合がある。セキュリティ機能を無効化するフラグは安易に使わない。

悪用確認と公開情報の読み方

開発元の公式アドバイザリでは、実際のStorybookプロジェクトへの悪用は把握していないと説明している。脆弱性の再現や攻撃シナリオの公開は、現実の被害発生を意味しない。開発サーバーが外部ネットワークに公開されていたか、利用したブラウザやアドオンの構成によって、リスクは変わる。

ただし、修正までの間に開発者のPCで脆弱なdevサーバーを使い続ける必要はない。チーム全体で利用状況を把握し、修正版を適用した後に開発サーバーを再開するのが基本だ。

公式一次情報(Critical):https://github.com/storybookjs/storybook/security/advisories/GHSA-f2ph-cmg5-wxc8

公式一次情報(High):https://github.com/storybookjs/storybook/security/advisories/GHSA-px85-f4q5-jh77

TRANSMISSION / AFTER THE SIGNAL

読んだ、その先へ。

気になった変化を共有して、次のシグナルへ。

SHARE THIS SIGNAL

BACK TO THE INDEX / FIND THE NEXT SIGNALALL SIGNALS