[解説] Cline Hubダッシュボードに潜むクロスオリジンWebSocketハイジャックの脅威 (GHSA-3cj3-hqcr-g934)
はじめに:Cline HubダッシュボードのWebSocket脆弱性
ソフトウェア開発ツールであるCline Hubダッシュボードに、クロスオリジンWebSocketハイジャック(CSWSH: Cross-Origin WebSocket Hijacking)を許容する深刻な脆弱性(GHSA-3cj3-hqcr-g934 / CVE-2026-59723候補)が発見されました。この脆弱性は「high」と評価されており、特に`cline dashboard`コマンドをローカルで実行している日本のフロントエンドエンジニアに大きな影響を与える可能性があります。本記事では、この脆弱性の技術的な詳細、潜在的な脅威、そして開発者が取るべき対策について解説します。
脆弱性の概要:なぜ危険なのか?
この脆弱性の根本原因は、Cline Hubダッシュボードサーバー(`@cline/cline-hub`)が`/browser`エンドポイントでWebSocket接続を受け入れる際に、HTTP `Origin`ヘッダーの検証を行わないことにあります。通常、ブラウザは異なるオリジンからのHTTPリクエスト(`fetch`、`XHR`など)に対して同一オリジンポリシー(Same-Origin Policy)を適用しますが、WebSocket接続についてはOriginヘッダーを付与するものの、その検証はサーバー側に委ねられています。Cline Hubダッシュボードサーバーがこの検証を怠るため、悪意のあるウェブサイトからでも容易にWebSocket接続が確立できてしまいます。
さらに、`ROOM_SECRET`環境変数が設定されていない場合(ローカルバインドのデフォルト設定)、`isAuthorizedBrowserRequest()`関数が無条件に`true`を返してしまい、認証が完全にバイパスされます。これにより、攻撃者は認証なしでWebSocket経由で様々な操作を行うことが可能になります。
攻撃のメカニズムと潜在的影響
攻撃は、開発者が`cline dashboard`コマンドを実行し、ローカル(通常は`ws://127.0.0.1:8787/browser`)でダッシュボードが稼働している状態で、悪意のあるウェブサイトにアクセスするだけで成立します。攻撃者は以下のことが可能になります。
<strong>1. 任意のコード実行(RCE)の可能性:</strong>
攻撃者は`desktopCommand`フレームを送信し、`upsert_mcp_server`コマンドを使って任意の`stdio` MCP(Managed Code Provider)サーバーエントリを被害者のCline設定ファイル(`cline_mcp_settings.json`)に注入できます。注入されたエントリは、ClineがMCPサーバーを次にアクティブ化する際に、被害者のユーザー権限で任意のシェルコマンドを実行します。これにより、永続的なコード実行が可能となります。例えば、`sh -c "rm -rf /"`のような悪意のあるコマンドを仕込むことも可能です。
<strong>2. 機密情報の窃取:</strong>
ワークスペースの状態、セッション情報、AIプロバイダーの設定など、WebSocketプロトコルを通じて公開される機密データを読み取ることができます。開発者の環境変数、APIキー、認証情報などが盗まれる可能性があります。
<strong>3. Clineエージェントセッションの乗っ取り:</strong>
ダッシュボードから作成されるセッションは、デフォルトで`autoApprove: true`(全てのツールを自動承認)となっています。攻撃者は、アクティブなClineエージェントセッションを完全に制御し、ファイル操作(読み書き)、コマンド実行、ネットワーク操作などを被害者に代わって実行できます。
これらの攻撃は、認証やユーザーのインタラクションを必要とせず、悪意のあるページを一度訪問するだけで実行されるため、非常に危険です。
フロントエンドエンジニアが取るべき対策
この深刻な脆弱性から身を守るために、以下の対策を強く推奨します。
<strong>1. `ROOM_SECRET`環境変数の設定:</strong>
`cline dashboard`を起動する際は、必ず`ROOM_SECRET`環境変数を設定してください。これにより、`isAuthorizedBrowserRequest()`関数が秘密鍵をチェックするようになり、認証が強化されます。例: `export ROOM_SECRET="あなたの強固なシークレットキー"` の後に `cline dashboard` を実行します。
<strong>2. `autoApproveTools`オプションの確認:</strong>
Clineのエージェントがツールを自動承認しないよう、設定を確認してください。可能であれば、`autoApproveTools: false`を明示的に設定し、実行前にユーザーの確認を求めるようにします。
<strong>3. Clineのバージョンアップ:</strong>
脆弱性が修正された最新バージョンのClineに速やかにアップデートしてください。開発者は常に使用しているソフトウェアのセキュリティ情報を確認し、最新の状態を保つことが重要です。
<strong>4. 不審なWebサイトへのアクセスに注意:</strong>
開発作業中に不審なリンクをクリックしたり、信頼できないウェブサイトにアクセスしたりすることは避けてください。これは基本的なセキュリティ対策ですが、CSWSH攻撃のようなブラウザ経由の攻撃を防ぐ上で非常に重要です。
<strong>5. 開発サーバーの公開範囲を限定:</strong>
`cline dashboard`に限らず、ローカルで実行している開発サーバーやツールは、必要以上に外部に公開しないように注意してください。`127.0.0.1`などのローカルループバックアドレスにバインドされていることを確認しましょう。
まとめ
Cline HubダッシュボードのクロスオリジンWebSocketハイジャック脆弱性は、開発者のローカル環境でコード実行や情報漏洩を許してしまう深刻な問題です。フロントエンドエンジニアの皆様は、本記事で解説した対策を速やかに実施し、セキュリティリスクを最小限に抑えるよう努めてください。常に最新のセキュリティ情報をキャッチアップし、安全な開発環境を維持することが何よりも重要です。