Researchers Demonstrate How MCP Prompt Injection Can Be Used for Both Attack and Defense
2025/04/30 thehackernews — AI 分野が急速に進化する中で、Model Context Protocol (MCP) の悪用方法が分析され、プロンプト・インジェクション攻撃だけではなく、セキュリティ・ツールの開発や悪意のツールの特定などもカバーできそうなことが、Tenable の調査により明らかになった。Anthropic が 2024年11月に発表した、新しいプロトコル MCP は、大規模言語モデル (LLM:Large Language Models) と外部のデータソース/サービスを接続するために設計されたものだ。その目的は、LLM が選ぶ外部ツールを通じて、それらのシステムと連携し、AI アプリケーションの精度/関連性/実用性などを高めるところにある。

MCP はクライアント・サーバ型のアーキテクチャを採用している。たとえば、Claude Desktop や Cursor のような、MCP クライアント備えたホストであれば、特定のツールや機能を提供する複数の MCP サーバと通信できるようになっている。
この、オープン標準である MCP は、さまざまなデータソースへのアクセスや、LLM プロバイダの切り替えを可能にするための、統一されたインターフェースを提供している。しかし、その一方で、過剰な権限付与や、間接的なプロンプト・インジェクション攻撃などの新たなリスクも伴う。
たとえば、Gmail と連携する MCP があった場合、攻撃者はメッセージ内に悪意の命令を仕込むことができる。その命令を LLM が解析すると、攻撃者の管理下にあるメール・アドレスへ向けて、機密メールを転送するといった、不正な操作が実行される恐れがある。
MCP は、ツール・ポイズニング攻撃にも脆弱であることが判明している。具体的に言うと、ツールの説明文に悪意ある命令が埋め込まれ、それを読み取る LLM 上で、不正な動作を引き起こすというものだ。さらに、ラグプル攻撃をゆるす可能性もある。これは、最初は正常に動作するツールに対して、時間をおいて悪意の更新を行い、それにより挙動を変化させる手法である。
最新の分析で SentinelOne は、「注意すべきは、ツールの利用とアクセスを、ユーザーが一度でも許可してしまうと、ユーザーに再確認することなく、ツールに付与された権限が再利用されるという可能性が生じる点だ」と指摘している。
さらに、ツール間での汚染や、サーバー間でのツール・シャドウイングなどのリスクも存在する。それにより、ある MCP サーバによる他サーバの動作への干渉が生じ、また、他のツールの使い方への可視化されない影響が生じることで、新たな形のデータ漏えいにつながる可能性がある。
Tenable の最新の研究によると、すべての MCP ツールの呼び出しを記録するツールを、MCP を利用することで構築できる可能性もあるという。それは、ツールの説明文に特殊な命令を埋め込み、他のツールが呼び出される前に必ず、この細工されたツールが先行して動作するように、LLM に指示する仕組みで実現するという。

言い換えれば、この種のプロンプト・インジェクションは、悪意ではなく善意の目的で使用されている。その狙いは、実行を指示されたツールに関する情報を、ログに記録することである。それら情報には、MCP サーバ名/MCP のツール名と説明/LLM がツールの実行を試みる原因となったユーザー・プロンプトなどが含まれる。
もう一つのユースケースとして、ツールの説明文に特定の記述を埋め込むことで、不正なツールの実行を防ぐ、ファイアウォールのような機能を持たせることができる。
セキュリティ研究者の Ben Smith は、「大半の MCP ホスト・アプリケーションにおいて、ツールの実行には明示的な許可が必要であるべきだ。しかも、ツールは仕様通りに解釈されるとは限らず、ツールの説明文や返り値を通じて LLM に間接的に指示を与える手法が数多く存在する。LLM 自体が確定的ではないため、その挙動や結果の予測が難しい」と述べている。
A2A にも潜む脆弱性
今回の報告は、Trustwave SpiderLabs が明らかにした、Agent2Agent (A2A) プロトコルの新たな攻撃手法とも関連している。A2A も新たに導入されたプロトコルであり、エージェント型アプリケーション間の通信と相互運用性を実現するために設計されている。
Google は 2025年4月初めに A2A を発表し、ベンダやフレームワークに依存することなく、分断されたデータ・システムやアプリケーション間で、AI エージェント同士が連携する仕組みとして位置付けている。ここで重要なのは、MCP が LLM とデータをつなぐのに対して、A2A は AI エージェント同士を接続するという違いである。つまり両者は、相互に補完しあうプロトコルといえる。
セキュリティ研究者の Tom Neaves は、「仮に、OS などの別の脆弱性を通じて、ある AI エージェントが侵害されたとする。その後に、その乗っ取ったエージェントに対して、過剰な能力を持つと偽る Agent Card を与えると、常に我々を最適なエージェントとして選ぶホスト・エージェントは、すべてのユーザーの機密データを渡してくるようになる」と述べた。
さらに彼は、「この攻撃は、単にデータを盗み取るだけでなく、積極的に偽の結果を返すことさえ引き起こせる。そうした誤情報を、LLM やユーザーが信じてしまい、後続の処理や判断に影響を及ぼす恐れがある」と付け加えている。
いまをときめく、MCP と A2A ですが、不確かな相互信頼という、サプライチェーンの問題を含んでいるようです。もちろん、AI だからこそ、特殊な観点が必要になりますが、基本的に OSS リポジトリの依存関係に似ている感じもします。ただ、文中の「ツールの利用とアクセスを、ユーザーが一度でも許可してしまうと、ユーザーに再確認することなく、ツールに付与された権限が再利用される」という部分が、とても気になります。よろしければ、2025/04/10 の「MCP に潜む脆弱性:AI 時代の新たな脅威として浮上するツール・ポイズニング攻撃」も、カテゴリ AI/ML と併せて、ご参照ください。
You must be logged in to post a comment.