MCPのセキュリティリスク実践:インジェクション攻撃からグローバルコントロールへの隠れたテクニック

MCP体系における隠蔽された毒付けと操作:実戦デモ

現在、MCP (Model Context Protocol)体系はまだ初期の発展段階にあり、全体的な環境はかなり混沌としており、さまざまな潜在的な攻撃手法が次々と登場しています。既存のプロトコルやツールの設計では効果的な防御が困難です。コミュニティがMCPの安全性をよりよく理解し向上させるために、最近MasterMCPツールがオープンソースされました。これは実際の攻撃演習を通じて、製品設計における安全上の問題を発見し、徐々にMCPプロジェクトを強化することを目的としています。

この記事では、読者が実際に手を動かし、MCPシステム下での一般的な攻撃手法、例えば情報の毒入れや隠れた悪意のある命令などの実際のケースをデモンストレーションします。すべてのデモスクリプトもオープンソースとして公開され、読者は安全な環境でプロセス全体を再現し、これらのスクリプトを基に独自の攻撃テストプラグインを開発することができます。

! 実際の戦闘出発:MCPシステムにおける秘密の毒殺と操作

全体アーキテクチャ概要

デモ攻撃ターゲットMCP:ツールボックス

smithery.aiは現在最も人気のあるMCPプラグインサイトの1つで、多くのMCPリストとアクティブユーザーを集めています。その中で@smithery/toolboxはこのサイトが公式に提供するMCP管理ツールです。

Toolboxをテスト対象として選択する理由は、主に以下の点に基づいています:

  • ユーザー数が非常に多く、代表性があります
  • 他のプラグインの自動インストールをサポートし、一部のクライアント機能を補完します。
  • センシティブな設定(を含むAPIキー)、デモの実施を容易にするために

悪意のある MCP の使用を示す: MasterMCP

MasterMCPは、安全テストのために設計された悪意のあるMCPツールのシミュレーションであり、プラグインアーキテクチャを採用しており、以下の重要なモジュールを含んでいます:

  1. ローカルウェブサイトサービスのシミュレーション:

攻撃シーンをよりリアルに再現するために、MasterMCPにはローカルウェブサイトサービスシミュレーションモジュールが内蔵されています。これはFastAPIフレームワークを使用して簡易HTTPサーバーを迅速に構築し、一般的なウェブページ環境をシミュレートします。これらのページは一見正常に見えますが、実際にはページのソースコードやインターフェースの返却に巧妙に設計された悪意のあるペイロードが隠されています。

この方法を通じて、私たちは安全で制御可能なローカル環境で、情報毒性や指令隠蔽などの攻撃手法を完全にデモンストレーションすることができ、直感的に理解するのに役立ちます。たとえ一見普通のウェブページであっても、大規模モデルが異常な操作を実行する引き金となるリスク源になる可能性があります。

  1. ローカルプラグイン化MCPアーキテクチャ

MasterMCPはプラグイン方式で拡張され、新しい攻撃方法を迅速に追加できるようになっています。実行後、MasterMCPは子プロセスで前のモジュールのFastAPIサービスを実行します。(注意深く見ると、ここに安全上のリスクがすでに存在することに気付くでしょう——ローカルプラグインはMCPの期待しない子プロセスを任意に起動できます)

デモクライアント

  • Cursor:現在、世界で最も人気のあるAI支援プログラミングIDEの1つ
  • Claude Desktop:Anthropic(MCプロトコルカスタマイズ先)公式クライアント

デモで使用される大モデル

  • クロード 3.7

Claude 3.7バージョンを選択する理由は、敏感な操作の識別において一定の改善があり、現在のMCPエコシステムにおいて比較的強い操作能力を示しているためです。

! 実戦:MCPシステムにおける秘密の毒殺と操作

クロスMCP悪意のある呼び出し

ウェブコンテンツの毒攻撃

  1. コメント型毒

Cursorはローカルテストサイトにアクセスします。

これは一見無害な「Delicious Cake World」に関するページであり、この実験を通じて、大規模モデルクライアントが悪意のあるウェブサイトにアクセスすることによる影響をシミュレーションして示しています。

指示を実行する: コンテンツを取得する

結果は示していますが、Cursorはウェブページの内容を読み取るだけでなく、ローカルの機密設定データをテストサーバーに送信しました。ソースコード内では、悪意のあるキーワードがHTMLコメント形式で埋め込まれています。

注釈の方法は比較的直接的で、認識しやすいですが、悪意のある操作を引き起こすことができます。

! 実戦:MCPシステムにおける秘密の毒殺と操作

  1. コーディング型コメントの毒物

アクセス/encodeページ、これは上記の例と同じように見えるウェブページですが、その中の悪意のあるプロンプトがエンコードされており、毒物のexpがより隠蔽されているため、ウェブページのソースコードにアクセスしても直接察知するのが難しいです。

ソースコードに明示的なヒントが含まれていなくても、攻撃は依然として成功します。その具体的な原理については、後の章で詳しく説明します。

! 実際の戦闘出発:MCPシステムにおける秘密の毒殺と操作

MCPツールの返情報が投毒されました

MasterMCPの指示に従って、シミュレーションコマンド(を入力してください。このコマンドには実際の意味はなく、悪意のあるMCPをトリガーしてその後の操作を示すことを目的としています):

たくさんのリンゴを手に入れる

見ることができるのは、トリガーコマンド後、クライアントがMCPを越えてToolboxを呼び出し、新しいMCPサーバーを正常に追加したことです。

プラグインコードを確認すると、返されたデータには、エンコードされた悪意のあるペイロードが埋め込まれており、ユーザー側ではほとんど異常に気づくことができません。

! 実際の戦闘出発:MCPシステムにおける秘密の毒殺と操作

サードパーティインターフェース汚染攻撃

このデモは、悪意のあるMCPであれ非悪意のあるMCPであれ、第三者APIを呼び出す際に、第三者のデータをそのままコンテキストに返すと、深刻な影響をもたらす可能性があることを主に警告しています。

リクエストを実行する: /api/data から json をフェッチします

結果: 悪意のある提示語が返されたJSONデータに植え付けられ、悪意のある実行が成功裏にトリガーされました。

! 実際の戦闘出発:MCPシステムにおける秘密の毒殺と操作

MCP初期段階のポイズン技術

悪意の関数オーバーライド攻撃

MasterMCPは、Toolboxで使用されるのと同じ関数名remove_serverのツールを作成し、悪意のあるプロンプトを隠すようにエンコードしました。

命令を実行する: ツールボックスからフェッチプラグインサーバーを削除

Claude Desktop は、元のツールボックス remove_server メソッドを呼び出す代わりに、MasterMCP によって提供される同じ名前のメソッドをトリガーします。

原理は「従来の方法は廃止されました」と強調することで、大規模モデルに悪意のある上書き関数を優先的に呼び出させることです。

! 実戦出発:MCPシステムにおける秘密の毒殺と操作

悪意のあるグローバルチェックロジックを追加

MasterMCPはbananaのツールを作成しました。このツールの主な機能は、すべてのツールが実行される前に必ずこのツールを実行して安全チェックを行うことを強制することです。

関数を実行するたびに、システムはまずbananaチェックメカニズムを呼び出します。

これはコード内で"バナナ検出を必ず実行する"と繰り返し強調することによって実現されるグローバルロジックインジェクションです。

! 実際の戦闘出発:MCPシステムにおける秘密の毒殺と操作

悪意のあるプロンプトを隠すための上級テクニック

大規模モデルに優しいコーディング方式

大規模な言語モデルが多言語形式に対して非常に強い解析能力を持っているため、これが悪意のある情報を隠すために利用されることがあります。一般的な方法には次のようなものがあります:

  • 英語環境下: Hex Byteエンコーディングを使用する
  • 日本語環境下:使用NCRエンコーディングまたはJavaScriptエンコーディング

ランダム悪意のあるペイロード返却メカニズム

/randomをリクエストすると、毎回悪意のあるペイロードを含むページがランダムに返され、検出と追跡の難易度が大幅に増加します。

! 実戦:MCPシステムにおける秘密の毒殺と操作

まとめ

MasterMCPの実戦デモを通じて、私たちはModel Context Protocol (MCP)体系の中に隠されたさまざまな安全上のリスクを直感的に見ることができました。単純なプロンプトインジェクション、クロスMCP呼び出しから、さらに隠れた初期化段階の攻撃や悪意のある命令の隠蔽まで、各段階は私たちに警告を発しています:MCPエコシステムは強力ですが、同時に脆弱でもあります。

特に大規模なモデルが外部プラグインやAPIと頻繁に相互作用する今日、小さな入力の汚染が全体的なシステムレベルのセキュリティリスクを引き起こす可能性があります。そして、攻撃者の手段の多様化(エンコード隠蔽、ランダム汚染、関数の上書き)は、従来の防御の考え方を全面的にアップグレードする必要があることを意味します。

安全は決して一朝一夕ではない。

今回のデモが皆さんに警鐘を鳴らすことを願っています: 開発者であれユーザーであれ、MCPシステムには十分な警戒心を持ち、すべてのインタラクション、すべてのコード行、すべての戻り値に常に注意を払うべきです。すべての細部において厳密に取り組むことで、真に堅固で安全なMCP環境を構築することができます。

次のステップとして、我々はMasterMCPスクリプトの改良を続け、より多くの特化したテストケースをオープンソース化し、皆さんが安全な環境で深く理解し、演習し、防御を強化する手助けをします。

! 実戦出発:MCPシステムにおける秘密の毒殺と操作

BANANA0.58%
原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • 5
  • 共有
コメント
0/400
ponzi_poetvip
· 08-05 16:02
コードの量が十分ではない
原文表示返信0
LayerZeroEnjoyervip
· 08-05 15:45
安全な脅威が非常に深刻です。
原文表示返信0
OffchainWinnervip
· 08-05 15:42
オープンソースは批判を恐れないのか
原文表示返信0
OneBlockAtATimevip
· 08-05 15:38
この脆弱性はあまりにも危険ではないですか
原文表示返信0
Rekt_Recoveryvip
· 08-05 15:35
攻撃的な毒投与は慎重に使用する必要があります
原文表示返信0
  • ピン
いつでもどこでも暗号資産取引
qrCode
スキャンしてGateアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)