JFrogのセキュリティ専門家は、MCP(Model Context Protocol)を悪用したプロンプトハイジャッキングの脅威を発見した。MCPはAnthropicが開発したプロトコルで、AIが現実世界のデータやサービスに接続することを可能にする。
今回発見された脆弱性CVE-2025-6515は、oatpp-mcpシステムのServer-Sent Events接続処理に存在する。この脆弱性は、セッションIDとしてメモリアドレスを使用する設計上の欠陥により、攻撃者がユーザーセッションに侵入し、偽のリクエストを送信できる。攻撃者はAIアシスタントの応答を操作し、悪意のあるツールやパッケージを推奨させることが可能である。対策として、強力なランダムジェネレーターによるセッションID生成、クライアント側での不正イベント拒否、AIプロトコル全体へのゼロトラスト原則の適用が必要とされる。
From: MCP prompt hijacking: Examining the major AI security threat
【編集部解説】
AnthropicがModel Context Protocol(MCP)を発表したのは2024年11月のことでした。AIアシスタントが企業のデータベースやツールに直接アクセスできるようにする画期的な仕組みとして、業界は大きな期待を寄せました。しかし、わずか数カ月後、このプロトコルの実装に深刻な脆弱性が次々と発見されています。
今回JFrogが発見したCVE-2025-6515は、そうした脆弱性の一つです。問題が発生したのは、Oat++というC++ウェブフレームワークのMCP実装部分でした。Oat++は軽量で高性能なフレームワークとして知られていますが、MCPを実装する際に致命的な設計ミスを犯していました。
具体的には、Server-Sent Events(SSE)を使った通信において、セッションIDとしてメモリアドレスをそのまま使用していたのです。これは深刻な問題です。なぜなら、コンピュータはメモリ管理の効率化のために同じアドレスを再利用するからです。
攻撃者は短時間に大量のセッションを作成・破棄することで、再利用されるメモリアドレス(つまりセッションID)のパターンを記録できます。そして正規ユーザーが接続した際に、偶然その記録済みのIDが割り当てられれば、攻撃者は正規ユーザーになりすましてサーバーにリクエストを送信できるのです。
この攻撃の恐ろしさは、AIモデル自体には一切手を加えることなく、AIアシスタントの動作を完全に操作できる点にあります。例えば、開発者が「画像処理に適したPythonライブラリを教えて」と尋ねた場合、通常なら信頼性の高いPillowが推奨されるべきところ、攻撃者が用意した悪意のあるパッケージを推奨させることができます。
これはソフトウェアサプライチェーン攻撃の新しい形態と言えます。開発者は自分が信頼するAIアシスタントから推奨を受けているつもりでも、実際には攻撃者が裏で操作している可能性があるのです。そして悪意のあるパッケージをインストールすれば、データの窃取やバックドアの設置など、さまざまな被害につながります。
重要なのは、この問題がAI特有の脆弱性ではなく、古典的なWebアプリケーションのセッションハイジャッキング問題が、AI時代に新しい形で利用されたという点です。安全なWebアプリケーション開発の基本原則、つまり暗号的に安全な乱数でセッションIDを生成することが守られていなかったのです。
MCPエコシステム全体を見渡すと、今回の脆弱性は氷山の一角に過ぎません。2025年に入ってから、MCP Inspectorのリモートコード実行脆弱性(CVE-2025-49596)、mcp-remoteのコマンドインジェクション脆弱性(CVE-2025-6514)、Cursor IDEのMCP設定ファイル改ざん問題など、次々と深刻な脆弱性が報告されています。
これらの問題に共通するのは、MCPというプロトコル自体がセキュリティを十分に考慮して設計されていなかったという点です。GitGuardianのセキュリティ研究者Gaetan Ferryが指摘するように、「プロトコル自体がセキュリティ的に成熟していなければ、エコシステム全体が成熟することは期待できない」のです。
AI時代のインフラストラクチャは、従来のソフトウェアセキュリティの原則と、AI特有の新しい脅威モデルの両方を考慮する必要があります。MCPのような重要なプロトコルには、設計段階からセキュリティを組み込む「セキュア・バイ・デザイン」のアプローチが不可欠です。
企業がAIアシスタントを業務に組み込む際には、接続するMCPサーバーが信頼できるものか、通信がHTTPSで暗号化されているか、セッション管理が適切に実装されているかを慎重に確認する必要があります。便利さと引き換えに、新しいセキュリティリスクを抱え込むことになってはならないのです。
【用語解説】
プロンプトハイジャッキング(Prompt Hijacking)
AIモデルへの入力を操作して、本来の指示を無視させ、攻撃者が意図した動作を実行させる攻撃手法である。プロンプトインジェクションとも呼ばれる。
Server-Sent Events(SSE)
サーバーからクライアントへ一方向にデータをストリーミングするHTTP技術である。リアルタイム通知やライブアップデートに使用される。
セッションハイジャッキング
正規ユーザーのセッションIDを盗むか推測することで、認証を回避して不正アクセスを行う古典的な攻撃手法である。
ソフトウェアサプライチェーン攻撃
開発プロセスや依存関係を悪用して、正規のソフトウェアに悪意のあるコードを注入する攻撃である。
CVE(Common Vulnerabilities and Exposures)
公開されているセキュリティ脆弱性を識別するための標準的な識別子システムである。
ゼロトラスト原則
ネットワークの内外を問わず、すべてのアクセスを検証し信頼しないというセキュリティモデルである。
【参考リンク】
Model Context Protocol(公式サイト)(外部)
MCPの公式ドキュメント。プロトコルの仕様や実装ガイド、サンプルコードなどが提供される。
Anthropic(公式サイト)(外部)
MCPを開発したAI企業。ClaudeなどのAIアシスタントを提供し、AI安全性研究に注力。
JFrog Security Research(外部)
ソフトウェアサプライチェーンのセキュリティ研究部門。CVE-2025-6515を発見した。
Oat++ Framework(外部)
軽量で高性能なC++ウェブフレームワーム。ゼロ依存で移植性が高く、IoTでも使用される。
CVE-2025-6515 詳細(外部)
oatpp-mcpの脆弱性に関する技術的詳細。JFrogによる公式レポート。
OWASP Top 10 for LLM Applications(外部)
大規模言語モデルアプリケーションの主要なセキュリティリスクをランク付けしたリスト。
【参考記事】
Introducing the Model Context Protocol – Anthropic(外部)
MCPの公式発表記事。プロトコルの目的やアーキテクチャ、採用企業を説明している。
MCP attack uses predictable session IDs to hijack AI agents – The Register(外部)
CVE-2025-6515の技術的詳細と攻撃手法を解説。研究者へのインタビューも含まれる。
Critical RCE Vulnerability in mcp-remote: CVE-2025-6514 – JFrog(外部)
別のMCP関連脆弱性の詳細レポート。エコシステム全体の問題の広がりを示す。
What Is a Prompt Injection Attack? – IBM(外部)
プロンプトインジェクション攻撃の基礎、種類、影響、対策方法の包括的ガイド。
Top MCP Security Resources – October 2025 – Adversa AI(外部)
2025年10月時点でのMCPセキュリティに関する28の重要リソースをまとめた総合ガイド。
Agent Hijacking: The true impact of prompt injection attacks – Snyk Labs(外部)
AIエージェントに対するプロンプトインジェクション攻撃の実態とLakeraとの共同研究結果。
【編集部後記】
AIアシスタントが企業データに直接アクセスできる未来は、確かに魅力的です。しかし今回の脆弱性が示すように、便利さの裏には新たなリスクが潜んでいます。私たち編集部も、MCPのような新しいプロトコルを使う際には、セキュリティ面での成熟度を慎重に見極める必要があると感じています。みなさんの組織では、AIツールを導入する際にどのようなセキュリティチェックを行っていますか?開発チームとセキュリティチームが協力して、AIインフラ全体を見渡す体制を整えることが、これからますます重要になってくるのではないでしょうか。