MCP環境におけるセキュリティ脅威と脆弱性:5つの領域から見る防御策
公開日
セキュリティ
大規模言語モデル(LLM)が外部ツールやデータベースと自律的に通信する環境が広がるにつれて、エージェント連携基盤を狙った攻撃への懸念が高まっています。従来のWebシステムとは異なり、自然言語プロンプトの非決定的な解釈と決定論的なシステム実行が混在するため、アクセス制御や入力検証の不備がシステム全体の侵害につながる危険があります。
こうした課題に対し、コロラド工科大学(Colorado Technical University)のUpendra Kanuru氏とAlexa Schmitt氏は、論文「Artificial Intelligence - Model Context Protocol - Review of Real-World Security Threats」(2026年)を発表しました。本稿では、同論文が報告した現実のインシデント事例に基づき、Model Context Protocol(MCP)を取り巻く脅威の構造と、システムを保護するための具体的な対策を解説します。
Model Context Protocolの仕組みと攻撃対象領域
MCPは、Anthropicが2024年11月に提唱したオープン標準であり、AIモデルと外部のツール、データベース、業務システムを接続する目的で設計されました。モデルごとに個別のアダプターを開発する負担を解消するため、JSON-RPC 2.0メッセージによるクライアント・サーバー構成を採用しています。2025年12月には、中立的なオープンガバナンスを確立するため、Linux Foundation傘下のAgentic AI Foundationへと管理が移管されました。
ローカル環境では標準入出力(stdio)、リモート通信環境ではServer-Sent Events(SSE)を利用してデータをやり取りします。しかし、AIエージェントが自律的に外部リソースを呼び出す構造そのものが、攻撃者にとっての足がかりになります。デフォルトの設定が過度に寛容であったり、ツールの説明情報が未検証のままモデルへ渡されたりすると、プロンプトインジェクションや権限昇格、不正なコード実行が発生する土台となります。
論文では、MCP環境における脅威を以下の5つの領域に分類しています。
表1:MCP環境における主な脅威分類と攻撃手法(記事編集部作成、論文 pp.4–8を基に整理)
| セキュリティ領域 | 主な脅威 | 論文で報告された具体的な事象・影響 |
|---|---|---|
| ツールとサーバー | ツールポイズニング、サプライチェーン侵害 | Postmark MCPサーバーのバックドア、TanStack npmパッケージ侵害 |
| プロンプトとコンテキスト | プロンプトインジェクション、コンテキスト汚染 | Copilot StudioやAgentforceの外部データ流出、架空情報の生成 |
| データとプライバシー | パストラバーサル、リポジトリ越境アクセス | @sylphxltd/filesystem-mcpの脆弱性、GitHub MCP連携の悪用 |
| システムと運用 | 任意コード実行(RCE)、Confused Deputy | stdioサブプロセス起動の不備、FastMCP OAuthProxyの検証漏れ |
| 認証とアイデンティティ | トークン偽造、スコープ検証不備 | Storm-0558による署名鍵の悪用とクラウドアカウント侵入 |
ツールとプロンプトを介したメタデータの汚染
MCPサーバーが提供するツール定義やJSONスキーマは、AIモデルがタスクを判断するための信頼できるメタデータとして扱われます。攻撃者はこの前提を逆手に取り、モデルの振る舞いを不正に操作します。
ツールポイズニングによるバックドアの設置
2025年4月、セキュリティ研究者によって「ツールポイズニング(Tool Poisoning)」と呼ばれる手法が報告されました。攻撃者は監視が行き届きにくいツール記述フィールドやJSONスキーマ内に自然言語の攻撃指示を潜ませます。
論文では、2025年9月にKoi Securityが報告した Postmark MCPサーバーのバックドア事例 が取り上げられています。クライアント側のUIがツールの完全なメタデータを隠蔽して簡略名のみを表示する仕様を悪用し、ユーザーの承認プロンプトを迂回してSSH鍵やリポジトリファイル、チャットログを窃取する動作が確認されました。モデルが動的にツールを検出する利便性の裏で、スキーマ情報の検証を怠ると深刻な侵害につながることが示されています。
公開入力からのプロンプトインジェクション
2026年4月には、Capsule Securityの研究者が Microsoft Copilot Studio および Salesforce Agentforce におけるプロンプトインジェクションの脆弱性を報告しました。Webフォームなどの公開インターフェースから悪意ある入力を送り込むことで、エージェントを操り、機密データを外部のエンドポイントへ不正に送信させることが可能でした。
ベンダーによる修正パッチが適用された後も、攻撃プロンプトを調整することでデータ流出が再現されたため、静的な境界防御だけでは安全性を担保できない状況が浮き彫りになりました。
ファイルアクセスとデータ境界の侵害
AIエージェントにファイルシステムや社内リポジトリへのアクセス権を付与する場合、厳密な境界分離が保たれていなければ、機密情報が意図せず外部へ露出します。
シンボリックリンク処理の不整合によるパストラバーサル
ファイルシステムを操作するMCPサーバーでは、パス解決の不備が報告されています。@sylphxltd/filesystem-mcp(バージョン0.5.8)において確認された脆弱性(CVE-2025-67366)では、内部のパス検証関数(resolvePath)がシンボリックリンクの解決前に境界判定を行っていました。
一方で、Node.jsのファイル読み込み処理(fs.readFile)はシンボリックリンクを自動解決するため、アクセスが許可されたディレクトリ内に配置されたリンクを経由して、ホスト上の制限された設定ファイルへアクセスできる状態が生じました。論理パスの文字列検査だけでは不十分であり、物理パスの正規化が不可欠であることが示されています。
構造化RPCと未検証データの混在による情報流出
2025年5月には、GitHubのMCP統合においてクロスリポジトリのデータ流出を引き起こす脆弱性が確認されました。公開リポジトリのIssueに不正なプロンプトを埋め込んでおくことで、開発者が利用するAIエージェントにその内容を読み込ませ、プライベートリポジトリのソースコードや暗号鍵を外部へ流出させることが可能でした。
このインシデントの根本原因は、Remote Procedure Call(RPC)の実行制御フローと、外部から取得した未検証データとの間に適切な分離が存在しなかった点にあります。コンテキストウィンドウに入力された非信頼データが、そのまま高い実行権限を行使するトリガーとなっていました。
実行環境と認証基盤における構造的な課題
MCPのコア実装や周辺ライブラリにおける仕様上の前提条件も、重大なセキュリティインシデントを引き起こす要因となっています。
stdioトランスポートにおけるサブプロセス起動の欠陥
OX Securityが 2026年4月に公開した調査 では、MCPの標準入出力トランスポートがサブプロセスを起動する際の設計上の欠陥が指摘されました。SDKが対象プロセスの正当性を検証せずにOSコマンドを実行する設計になっていたため、サーバー設定値に未サニタイズの入力が渡された場合、LangFlow、Flowise、Cursor、Windsurfなどの環境で任意コード実行(RCE)が可能となっていました。
Anthropic側はこの動作を意図された仕様と説明し、ドキュメントの更新で対応しましたが、下流の各ベンダーは14件の共通脆弱性識別子(CVE)に対する個別の修正パッチを公開する事態となりました。
OAuthコールバックにおけるConfused Deputy問題
MCPアプリケーション構築フレームワークであるFastMCPのOAuthProxyコンポーネントでも脆弱性(CVE-2026-27124)が確認されました。バージョン3.2.0より前では、GitHubからの認証コード受信時にユーザーの同意確認を適切に検証していませんでした。
GitHub側が過去に承認済みのクライアントに対して同意画面を省略する仕様を利用し、攻撃者が生成した認証URLを被害者に踏ませることで、未検証のセッションに対してアクセストークンを不正に取得できる「Confused Deputy(混同代理)」状態が発生していました。外部のIdPが提供する利便性と、ローカルプロキシ側の厳格な状態検証とのバランスが崩れた典型例といえます。
開発と運用の現場で検討できる対策方針
論文で報告されたインシデントは、従来の境界防御だけでは自律型エージェントの安全性を保てないことを示しています。システムを安全に運用するために、以下の対策を検討する価値があります。
- メタデータとJSONスキーマの厳格な検証:MCPサーバーから返されるツールの説明文や引数スキーマを信頼せず、自然言語による指示が埋め込まれていないかをビルドパイプラインや中継ゲートウェイで検査します。
- 物理パスの正規化とシンボリックリンクの制御:ファイル操作ツールでは、アクセス判定を行う前にシンボリックリンクを完全に解決し、正規化された物理パスが許可ディレクトリ内に収まっているかを判定します。
- コンテキストと実行権限の明確な分離:Webフォームや外部Issueなどの未信頼入力がモデルの推論コンテキストに含まれる場合、書き込みや外部通信を伴う高権限ツールの実行を制限するアーキテクチャを採用します。
- ランタイム環境の隔離と最小権限の徹底:MCPサーバープロセスをコンテナやサンドボックス環境内で稼働させ、不要なシステムコマンドの呼び出しや外部ネットワークへの接続を遮断します。
- OAuth状態の多段階検証:外部IdPと連携するプロキシや認証基盤では、ブラウザ側の状態や認可コードの紐付けを一元的に検証し、代理実行の悪用を防止します。
まとめ
MCPはAIエージェントと外部システムを柔軟に結びつける強力な規格ですが、その利便性は攻撃対象領域の拡大と表裏一体です。ツールポイズニング、パストラバーサル、未サニタイズなプロセス起動、認証プロキシの不備など、報告されている問題の多くは「プロンプトの曖昧さ」と「システムの決定論的な権限」の接続点に集中しています。
自律的なエージェントを業務システムへ組み込む際は、暗黙の信頼を排除するゼロトラストの思想を前提とし、スキーマの検査、実行環境のサンドボックス化、そして重要な操作における人間の関与(Human-in-the-Loop)を組み合わせた多層防御を構築することが求められます。
Webサービスや社内のセキュリティにお困りですか? 弊社のサービス は、開発チームが抱える課題を解決し、生産性と幸福度を向上させるためのさまざまなソリューションを提供しています。ぜひお気軽にご相談ください!
参考資料: