dotsagent.io
言語:日本語

MCPツールポイズニング:ツールの説明に隠された指示

Invariant Labsは、MCPサーバーがモデルの読むツール説明に指示を隠せることを示し、tool shadowingやrug pullの手法について解説しました。

何が起きたか

2025年4月1日、Invariant LabsはModel Context Protocolにおけるツールポイズニングについて、セキュリティ通知を公開しました。悪意のあるMCPサーバーは、ツールの説明文に指示を埋め込みます。ユーザーがそのテキストを見ることはほとんどありませんが、モデルはコンテキストの一部として読み取り、その指示に従う可能性があります。

同じ通知では、関連する2つの攻撃についても説明されています。tool shadowingでは、あるサーバーの説明文によって、エージェントが別の信頼済みサーバーのツールを使う方法が変わります。rug pullでは、ユーザーがサーバーを承認した後に、サーバーがツールの説明文を変更します。

なぜ成功したか

クライアントは、接続中のすべてのサーバーのツール説明を1つのコンテキストに読み込みます。モデルは、ベンダーのドキュメントと攻撃者の指示を見分けられません。クライアントがサーバーを一度承認した後に再確認しなければ、その後の変更が見逃されます。

対策

  • MCPサーバーに接続する前に、ツール名だけでなく、ツールの説明文をすべて確認してください。
  • サーバーのバージョンを固定し、ツール説明のハッシュを記録してください。ハッシュが変わった場合は、再度確認を求めるか、アラートを出してください。
  • タスクに必要なサーバーだけを接続し、あるサーバーのテキストが別のサーバーのツールを誘導できないようにしてください。
  • データの送信やファイルの変更を伴うツール呼び出しには、承認を必須にしてください。

スキル、プラグイン、MCPサーバーを審査する重大な操作には承認を必須にする

セキュリティチェックリストを確認する →

出典

  1. invariantlabs.ai/blog/mcp-security-notification-tool-poisoning-attacks