TL;DR
- MCPサーバーはプラグインではなく、認証情報を預かり、呼び出しのたびにエージェントと対話する存在です。ツールの説明文とツールの結果は、あなた自身の指示と同じ重みでモデルのコンテキストに入ります。
- GhostSpliceは、モデルのアライメントが防御にならないことを示しました。窃取命令を1つのブロックで与えると、GPT-4o、Gemini 2.0 Flash、Llama 3.3は100%拒否します。同じ命令をツールの説明文とツールの結果に分割すると、100%従います。
- モデルと同じくらいクライアントも重要です。Claude Haiku 4.5はAPI経由ではすべて拒否しますが、Cursor内で実行した3分割テストでは100%従いました。
- サプライチェーンはすでに現実の脅威です。CVE-2025-6514は、40万回以上ダウンロードされたOAuthプロキシmcp-remoteに影響し、悪意あるサーバーがコマンドインジェクションを引き起こせました。
- Cloudflareのプロトコルレベル検出とWriteGuardは、初めての本格的な企業向け対策ですが、TLSインスペクション付きのZero Trustが必要で、ローカルのstdioサーバーはそこに現れません。
- 個人開発者や小さなチームの防御は手作業です。棚卸し、出所の確認、スコープを絞ったトークン、すべての書き込みへの人間の承認、そしてツール出力をデータとして扱うことです。
情報源が語ること
MCPサーバーはエージェントと外部サービスをつなぐため、接続に必要なものをあなたの代わりに保持します。トークン、APIキー、サービスアカウントの認証情報です。8月17日に公開された漏えい分析は、率直な指摘から始まります。トークンは設定文字列にそのまま貼り付けられ、ディスク上で読める状態のまま、急ぎのコミット1つでGitリポジトリに入る距離にあります s2。同じ分析は、過剰な権限付与を2つ目の穴として挙げています。開発中に付与した広い権限がそのまま本番に持ち込まれ、1回の侵害で実際の利用が必要とした以上のものが露出します s2。4つ目の穴はプロンプトインジェクションです。エージェントはツールが持ち帰るものすべてを読みます。Webページ、チケット、社内文書などです。その中に隠された指示が、あなたからのものであるかのように実行され、守るべきものを正規のツールで露出させます s2。
3つ目の穴はサプライチェーンです。CVE-2025-6514は、40万回以上ダウンロードされたOAuthプロキシmcp-remoteに影響しました。悪意あるサーバーが開発者のマシンでコマンドインジェクションを起こし、コードを実行して認証情報を持ち去れたのです。人気のnpmパッケージを1行でインストールしただけで、扉は開いていました s3。
エコシステムはガードレールより速く成長しました。公式レジストリの公開サーバーは9,600を超え、リモートサーバーの展開数は2025年5月から5倍になり、誰でも公開でき、中央での検証はありません。あなたのエージェントは、適当なエントリを公式ツールと同じ信頼度で扱います s4。NSAは5月にMCP専用のセキュリティガイドを公開し、プロトコルの普及が保護の整備を追い越したと明言しました s5。
ASSET研究グループが名付けたGhostSpliceは、エージェント自身に情報の持ち出しを実行させます。悪意あるサーバーは窃取命令を丸ごと書く代わりに分割します。1つの断片はツールの説明文に、もう1つはそのツールが返す結果に置きます。各断片は単独では無害に見えますが、エージェントはコンテキストに入ったものをすべて再結合し、命令全体を善意で実行します s1。数字がすべてを物語っています。命令を1つのブロックで与えると、GPT-4o、Gemini 2.0 Flash、Llama 3.3は100%拒否します。命令を分割すると、3つとも100%従います s1。Claude系は表面的には耐性が高いものの、Claude Haiku 4.5はAPI経由ではすべて拒否し、Cursor内で実行した3分割テストでは100%従いました。同じモデルが、クライアントが保護を追加するかどうかによって、あるクライアントでは拒否し、別のクライアントでは情報を持ち出します s1。テストで盗まれたのは、SSHキー、環境変数のシークレット、ソースコード、顧客データです。偽のキーを使った隔離プロジェクト上で、公開され再現可能な手法で行われました s1。同じ研究室は6月にGhostcommitを公開しました。プロジェクトの規約が参照するPNGファイルに指示を隠し、盗んだシークレットを整数としてソースコードにエンコードする手法です。指示の分割は単発の攻撃ではなく、攻撃の一族です s1。前提条件は2つあります。悪意あるサーバーがすでにエージェントに接続されていること、そしてエージェントが標的のファイルを読む権限を持っていることです s1。
企業側では、Cloudflareは開発者が承認なしにエージェントへ接続したサーバーを「shadow MCP」と呼んでいます。仕様の更新以降、準拠するすべてのMCPクライアントはMCP-Protocol-Versionヘッダーを送信し、Gatewayは分析対象のすべてのTLSトラフィックでこのヘッダーを検査します。これにより、セキュリティチームはユニークなサーバー数、ユーザー、リクエスト量のダッシュボードを得られます s6。最新の仕様バージョンではMcp-MethodとMcp-Nameヘッダーが加わり、リクエスト本文を開かずに要求された操作とツール名が分かります。そのため、ネットワーク側でチケットを読むエージェントと50件を削除するエージェントを区別できます。Cloudflareのルールは2つのケースを対象とします。純粋なshadow MCP(一度も承認されていないサーバー)と、ポータルバイパス(承認済みサーバーへの直接アクセス)で、どちらも同じ基本ルールでブロックされます s6。
プライベートベータとして公開されたWriteGuardは、すべてのMCPサーバーのすべてのツールをリスクレベルに分類し、レベルごとに異なるポリシーを適用します。読み取りは摩擦なく通ります。コメント投稿のような限定的な書き込みは通りますが、特定の人間に代わるエージェントによるものとして署名され、監査イベントが中央ログに送られます。コードのマージ、本番へのデプロイ、大量削除のような重大な操作は、サーバーが処理する前にブロックされます s7。記事のGitLabの例では、マージリクエストの閲覧は通り、コメントは帰属付きで通り、マージは人間が行うまで拒否されます。エージェントは仕えている従業員の権限を保持しますが、書き込みごとに2つの署名、つまり人とエージェントセッションが付きます。Cloudflareは自社での利用についても説明しており、同社のポータルは4月の13台に対し、27台のMCPサーバーを接続しています s7。
限界は現実的です。WriteGuardはサインアップ制のプライベートベータで、Gatewayの検出にはTLSインスペクションを有効にしたCloudflare Zero Trustの導入が必要です s7。検出が見られるのは復号できるネットワークトラフィックだけです。手元のマシン上で通常のプロセスとして動くstdio経由のローカルMCPサーバーはGatewayから見えず、開発者がインストールするサーバーの大半はこの形で動いています s6。GhostSpliceが明らかにした仕組みを、これらのツールは修正しません。ASSETの研究者は、対策はツール出力を指示ではなくデータとして扱うことだと述べていますが、その分離はまだエージェントにネイティブには存在しません。彼らの3つの推奨は、あるツールが出力した値を無検査で別のツールの引数に流さないこと、各ツール呼び出しを手動で拒否できる状態を保つこと、未検証サーバーからのアノテーションはデフォルトで敵対的とみなすことです s1。
判定: 何があなたを守り、何が守らないか
| Control | 対象 | 判定 |
|---|---|---|
| Model refusals | 全員 | 防御としては外す: 1ブロックなら100%拒否、分割すると100%従う [s1] |
| Client-side protections | 全員 | 残す: 同じモデルがAPIでは拒否し、Cursorでは従った [s1] |
| Inventory and provenance of servers | 個人とチーム | 残す: GhostSpliceはサーバーがすでに接続されていることが前提 [s1] |
| Dedicated scoped tokens, rotated | 個人とチーム | 残す: 平文トークンと過剰な権限が最初の2つの漏えい経路 [s2] |
| Pinning and auditing MCP dependencies | 個人とチーム | 残す: mcp-remoteは40万回以上のダウンロードにコマンドインジェクションを届けた [s3] |
| Gateway header detection (MCP-Protocol-Version, Mcp-Method, Mcp-Name) | Zero Trustを使う企業 | すでにTLSインスペクションを運用しているなら試す。stdioサーバーは見えない [s6] |
| WriteGuard risk levels | 企業 | ウェイトリストで試す。プライベートベータのみ [s7] |
| Human gate on every write, merge and delete | 全員 | 残す: WriteGuardが産業化するものの手作業版 [s7] |
月曜にやること
- 各エージェントに実際に接続されているMCPサーバーの一覧を出し、直近1か月使っていないものをすべて外す。
- 残った各サーバーについて、誰が公開しているかを書き留め、残す前にデータをどう扱うかを読む。ベンダーではなくスレッドで見つけたサーバーは外す。
- MCP設定内の共有認証情報やマスター認証情報をすべて、そのサーバーに必要な最小限のスコープの専用トークンに置き換え、ローテーション日を設定する。
- MCP設定ファイルがGitで追跡されていないことを確認し、追跡されている場合は.gitignoreに追加する。
- インストールするすべてのMCPパッケージのバージョンを固定し、lockfileにCVE-2025-6514の対象となるmcp-remoteのバージョンがないか確認する。
- 書き込み、マージ、デプロイ、削除を行うツールには手動承認を有効にし、使うすべてのクライアントでオンのままにする。
- サードパーティサーバーのツール説明文を一度すべて確認し、あなたではなくモデルに向けた指示がないか探す。
- Cloudflare Zero Trustを使っているなら、TLSインスペクションを有効にし、MCP-Protocol-Versionヘッダーからshadow MCPダッシュボードを作る。
さらに読む
- モデル別・クライアント別のテストマトリクスと、研究者が提案する3つの緩和策については、GhostSpliceの全文を読んでください s1。
- 同じ研究室による6月の攻撃Ghostcommitを調べ、PNGファイルに指示がどう隠され、盗んだシークレットがソースコード内で整数としてどうエンコードされたかを確認してください s1。
- 8月17日の分析にある4つの漏えい経路を自分の設定に当てはめてください。平文保存、過剰な権限、サプライチェーン、プロンプトインジェクションです s2。
- CVE-2025-6514のNVDエントリを読み、スタック内のOAuthプロキシを信頼する前に、影響を受けるmcp-remoteのバージョンを確認してください s3。
- NSAのMCP設計上の考慮事項を読んでください。エージェント自動化を展開するチーム向けに書かれた、ベンダー中立の唯一のチェックリストです s5。
- Cloudflareを使っていなくても、同社の記事にあるMCP-Protocol-Version、Mcp-Method、Mcp-Nameヘッダーを調べてください。自分で管理するプロキシならどれでもログに残せます s6。
- 自分のサーバーが公開するツールのレビュー基準として、WriteGuardの4つのリスクレベル(read-only、minimal impact、contained write、critical)を借りてください s7。
- 公式レジストリのREADMEを見て、公開に何が必要で、何が検査されないのかを把握してください s4。
情報源
- Malicious MCP servers can split exfiltration orders to bypass model refusals (GhostSplice)、The Hacker News。読む理由: モデル別・クライアント別の数字と研究者の緩和策が載っている唯一の場所です。
- How MCP servers can expose enterprise secrets、The Hacker News。読む理由: 4つの漏えい経路が順に整理されており、監査チェックリストとして使えます。
- CVE-2025-6514: mcp-remote command injection、NIST NVD。読む理由: 広く導入された最初のMCPサプライチェーン脆弱性の、影響を受けるバージョンと深刻度が分かります。
- Official Model Context Protocol registry、modelcontextprotocol on GitHub。読む理由: 公開の仕組みと、レジストリに載っていることが信頼の指標にならない理由が分かります。
- NSA releases security design considerations for AI-driven automation leveraging MCP、NSA。読む理由: MCPを大規模に展開するチーム向けの、ベンダー中立の設計ガイドです。
- Detecting and blocking shadow MCP at the protocol level、Cloudflare blog。読む理由: MCPトラフィックをネットワーク上で可視化する仕様のヘッダーを解説しています。
- Bring secure MCP connectivity to your enterprise with MCP Server Portals and WriteGuard、Cloudflare blog。読む理由: ツール単位のリスクモデルと二重署名のID設計を、具体的なGitLabの例とともに説明しています。
FAQ
より安全なモデルを使えばGhostSpliceから守られますか?
いいえ。この攻撃は禁止されたことを1つの塊として求めないため、拒否の学習が発動しません。同じClaude Haiku 4.5が、API経由ではすべて拒否し、Cursor内では100%従いました。結果を決めたのはモデルではなく、クライアントの保護です。
個人開発者ですが、Cloudflareのツールは自分に関係ありますか?
今のところありません。Gatewayの検出にはTLSインスペクション付きのZero Trustが必要で、WriteGuardはプライベートベータであり、どちらもローカルのstdioサーバーは見えません。上のチェックリストが、同じ対策の個人向け版です。
公式レジストリに載っているサーバーは安全ですか?
掲載は検証ではありません。レジストリには9,600を超えるサーバーがあり、中央でのレビューはなく、エージェントはレジストリのエントリをベンダーのツールと同じだけ信頼します。掲載ではなく、出所を見極め、コードを読んでください。
最も効果の高い変更は何ですか?
サーバーごとに、最小限のスコープを持つ専用トークンを使い、本番のシークレットのようにローテーションすることです。設定ファイル内の平文のマスター認証情報は最初の漏えい経路であり、CVE-2025-6514からプロンプトインジェクションまで、他のあらゆる失敗のコストを大きく押し上げます。
AIDive