# MCPシステムにおける隠れたポイズニングと操作:実戦デモMCP (モデルコンテキストプロトコル)体系は現在初期の発展段階にあり、全体的な環境は比較的混沌としており、さまざまな潜在的な攻撃方法が次々と現れています。既存のプロトコルとツールの設計は効果的に防御することが難しいです。コミュニティがMCPのセキュリティをよりよく理解し向上させるために、SlowMistは特にMasterMCPツールをオープンソース化しました。実際の攻撃演習を通じて、製品設計におけるセキュリティの脆弱性を発見し、MCPプロジェクトを徐々に強化することを望んでいます。この記事では、MCP体系における一般的な攻撃手法、例えば情報汚染や隠蔽された悪意のある命令などの実際のケースを実演します。すべてのデモスクリプトもオープンソースとして提供されるので、安全な環境でプロセス全体を再現し、これらのスクリプトを基に独自の攻撃テストプラグインを開発することもできます。! [実際の戦闘出発:MCPシステムにおける秘密の毒殺と操作](https://img-cdn.gateio.im/social/moments-b40c2ead4790c433f269d8e0d01ed30c)## 全体アーキテクチャの概要### ターゲット MCP のデモンストレーション: Toolboxsmithery.aiは現在最も人気のあるMCPプラグインサイトの1つであり、大量のMCPリストと活発なユーザーを集めています。その中で@smithery/toolboxはsmithery.aiが公式に提供するMCP管理ツールです。Toolboxをテスト対象として選択する理由は、主に以下の点に基づいています:- ユーザーベースが大きく、代表性がある- 他のプラグインの自動インストールをサポートし、部分的なクライアント機能(を補完します。)- センシティブな設定(を含むAPIキー)で、デモを行いやすくします。! [実戦:MCPシステムにおける秘密の毒殺と操作](https://img-cdn.gateio.im/social/moments-3c65fb78f3a1d00f05d6f3d950931f1f)### 悪意のある MCP の使用を示す: MasterMCPMasterMCPはSlow Mistが安全テストのために特別に開発した模擬悪意MCPツールで、プラグインアーキテクチャ設計を採用し、以下の重要なモジュールを含んでいます:1. ローカルウェブサイトサービスのシミュレーション:攻撃シーンをよりリアルに再現するために、MasterMCはローカルウェブサイトサービスシミュレーションモジュールを内蔵しています。これにより、FastAPIフレームワークを使用して簡易HTTPサーバーを迅速に構築し、一般的なウェブページ環境をシミュレーションします。これらのページは表面的には正常に見え、ケーキ店情報を表示したり、標準のJSONデータを返したりしますが、実際にはページのソースコードやインターフェースの返却結果に巧妙に設計された悪意のあるペイロードが隠されています。2. ローカルプラグイン化MCPアーキテクチャMasterMCPはプラグイン方式で拡張し、後続の新しい攻撃方式を迅速に追加することができます。実行後、MasterMCPはサブプロセスで前のモジュールのFastAPIサービスを実行します。(ここには既にセキュリティ上のリスクがあります - ローカルプラグインはMCPの予期しないサブプロセスを任意に起動できます)! [実戦:MCPシステムにおける秘密の毒殺と操作](https://img-cdn.gateio.im/social/moments-2fe451755dc3588ffc2ddbd7427dcf9b)### デモクライアント- Cursor:現在の世界で最も人気のあるAI支援プログラミングIDEの一つ- Claude Desktop:Anthropic(MCプロトコルカスタマイズ者)公式クライアント### デモで使用される大モデル- クロード 3.7Claude 3.7バージョンを選択してください。これは、敏感な操作の識別において一定の改善があり、現在のMCPエコシステムにおいて比較的強力な操作能力を代表しています。## クロスMCP悪意のある呼び出し本デモには、投毒とCross-MCP悪意ある呼び出しの2つの内容が含まれています。### ウェブコンテンツ毒攻撃1. コメント型の毒Cursorがローカルテストサイトにアクセスします。これは一見無害な「Delicious Cake World」ページですが、この実験を通じて、大規模モデルのクライアントが悪意のあるウェブサイトにアクセスした場合の影響をシミュレーションして示します。指令を実行する:コンテンツを取得する結果は示しています。Cursorはウェブページの内容を読み取るだけでなく、ローカルの敏感な設定データをテストサーバーに返送しました。ソースコード内では、悪意のあるキーワードがHTMLコメント形式で埋め込まれています。コメントの方法は比較的直接的で、識別されやすいですが、すでに悪意のある操作を引き起こす可能性があります。! [実際の戦闘出発:MCPシステムにおける秘密の毒殺と操作](https://img-cdn.gateio.im/social/moments-0ebb45583f5d7c2e4a4b792a0bdc989d)2. コーディング型コメント毒アクセス/encodeページ、これは前の例と同じように見えるウェブページですが、悪意のあるプロンプトがエンコードされており、これにより毒物のexpがより隠蔽され、ウェブページのソースコードにアクセスしても直接気付くことが難しいです。ソースコードに明示的なヒントが含まれていなくても、攻撃は成功裏に実行されます。! [実際の戦闘出発:MCPシステムにおける秘密の毒殺と操作](https://img-cdn.gateio.im/social/moments-3840e36661d61bbb0dcee6d5cf38d376)### MCP ツールが情報ポイズニングを返すMasterMCPのヒントに従って、シミュレーションコマンド(を入力してください。このコマンドには実際の意味はなく、悪意のあるMCPをトリガーしてその後の操作を示すことを目的としています):たくさんのリンゴを手に入れる見ることができるのは、トリガーコマンド後、クライアントがMCPを越えてToolboxを呼び出し、新しいMCPサーバーを正常に追加したことです。プラグインのコードを確認すると、返されたデータにエンコードされた悪意のあるペイロードが埋め込まれていることがわかり、ユーザー側では異常をほとんど認識できません。! [実際の戦闘出発:MCPシステムにおける秘密の毒殺と操作](https://img-cdn.gateio.im/social/moments-33ec895deae947ebc284e846286ccf1c)### サードパーティインターフェイス汚染攻撃このデモは、悪意のあるMCPであれ、非悪意のMCPであれ、サードパーティAPIを呼び出す際に、サードパーティのデータをコンテキストに直接返すと、深刻な影響を及ぼす可能性があることを警告するためのものです。リクエストを実行します:/api/data から json をフェッチします結果:悪意のあるプロンプトが返されたJSONデータに埋め込まれ、悪意のある実行が順調にトリガーされた。! [実戦出発:MCPシステムにおける秘密の毒殺と操作](https://img-cdn.gateio.im/social/moments-e16c8d753ef00ec06f0bf607dc188446)## MCP初期化フェーズにおけるポイズニング技術本デモには初期のプロンプトインジェクションと名前の衝突という2つの内容が含まれています。### 悪意のある関数オーバーライド攻撃ここでMasterMCPはToolboxと同じ関数名remove_serverのtoolを作成し、悪意のあるヒントを隠すためにエンコードしました。指示を実行する:ツールボックス プラグイン サーバーを削除するClaude Desktop は、元のツールボックス remove_server メソッドを呼び出す代わりに、MasterMCP によって提供される同じ名前のメソッドをトリガーします。原理は「従来の方法は廃止された」と強調することによって、大規模モデルに悪意のある関数の上書きを優先的に呼び出させることです。! [実際の戦闘出発:MCPシステムにおける秘密の毒殺と操作](https://img-cdn.gateio.im/social/moments-3e15b74bbdc0154ed8505c04345c4deb)### 悪意のあるグローバルチェックロジックを追加ここでMasterMCPはbananaのツールを作成しました。このツールの主な機能は、すべてのツールを実行する前に必ずこのツールを実行して安全チェックを行うことを強制することです。関数を実行する前に、システムは常にbananaチェックメカニズムを優先的に呼び出します。これは、コード内で"バナナ検出を必ず実行する"と繰り返し強調することによって実現されるグローバルロジックインジェクションです。! [実戦:MCPシステムにおける秘密の毒殺と操作](https://img-cdn.gateio.im/social/moments-cd87a6781e74c267c89e99e398e7499c)## 悪意のあるプロンプトを隠すための上級テクニック### 大規模モデルに優しいコーディング方式大規模言語モデル(LLM)は多言語フォーマットに対して非常に強力な解析能力を持っているため、これが悪意のある情報を隠すために利用されることがあります。一般的な方法には以下が含まれます:- 英語: Hex Byte encoding- 日本語環境下:使用NCRエンコーディングまたはJavaScriptエンコーディング! [実戦出発:MCPシステムにおける秘密の毒殺と操作](https://img-cdn.gateio.im/social/moments-c5a25d6fa43a286a07b6a57c1a3f9605)### ランダム悪意のあるペイロード返却メカニズム第二章で言及されている第三者インターフェースの汚染について、/randomをリクエストする際:毎回ランダムに悪意のあるペイロードを含むページが返されるため、検出と追跡の難易度が大幅に増加します。! [実戦出発:MCPシステムにおける秘密の毒殺と操作](https://img-cdn.gateio.im/social/moments-bf6d8976b54bebbec34699753f4dbb70)## まとめMasterMCPの実戦デモを通じて、私たちはModel Context Protocol (MCP)体系に隠されたさまざまなセキュリティリスクを直感的に見ることができました。単純なプロンプトインジェクションやMCP間の呼び出しから、より巧妙な初期化段階の攻撃や悪意のある命令の隠蔽まで、各段階が私たちに警告しています:MCPエコシステムは強力ですが、同時に脆弱でもあります。特に、大規模モデルが外部プラグインやAPIと頻繁にやり取りする今日においては、わずかな入力汚染がシステム全体の安全リスクを引き起こす可能性があります。そして、攻撃者の手法の多様化(エンコーディングの隠蔽、ランダム汚染、関数のオーバーライド)は、従来の防護の考え方が全面的にアップグレードされる必要があることを意味しています。安全は決して一朝一夕ではない。このデモが皆さんに警鐘を鳴らすことを願っています: 開発者であれ、ユーザーであれ、MCPシステムに対して十分な警戒心を持ち、常に各インタラクション、各コード行、各返り値を注視すべきです。すべての細部に厳格に対処することで、初めて堅固で安全なMCP環境を築くことができるのです。次のステップとして、私たちはMasterMCPスクリプトをさらに改善し、より多くのターゲットテストケースをオープンソース化して、皆さんが安全な環境の下で深く理解し、演習し、防御を強化する手助けをします。! [実戦開始:MCPシステムにおける秘密の毒殺と操作](https://img-cdn.gateio.im/social/moments-e92a70908e6828b2895dd5f52c58459e)
MCPシステムの安全リスク実戦デモ:毒を投げることから隠れた操作まで
MCPシステムにおける隠れたポイズニングと操作:実戦デモ
MCP (モデルコンテキストプロトコル)体系は現在初期の発展段階にあり、全体的な環境は比較的混沌としており、さまざまな潜在的な攻撃方法が次々と現れています。既存のプロトコルとツールの設計は効果的に防御することが難しいです。コミュニティがMCPのセキュリティをよりよく理解し向上させるために、SlowMistは特にMasterMCPツールをオープンソース化しました。実際の攻撃演習を通じて、製品設計におけるセキュリティの脆弱性を発見し、MCPプロジェクトを徐々に強化することを望んでいます。
この記事では、MCP体系における一般的な攻撃手法、例えば情報汚染や隠蔽された悪意のある命令などの実際のケースを実演します。すべてのデモスクリプトもオープンソースとして提供されるので、安全な環境でプロセス全体を再現し、これらのスクリプトを基に独自の攻撃テストプラグインを開発することもできます。
! 実際の戦闘出発:MCPシステムにおける秘密の毒殺と操作
全体アーキテクチャの概要
ターゲット MCP のデモンストレーション: Toolbox
smithery.aiは現在最も人気のあるMCPプラグインサイトの1つであり、大量のMCPリストと活発なユーザーを集めています。その中で@smithery/toolboxはsmithery.aiが公式に提供するMCP管理ツールです。
Toolboxをテスト対象として選択する理由は、主に以下の点に基づいています:
! 実戦:MCPシステムにおける秘密の毒殺と操作
悪意のある MCP の使用を示す: MasterMCP
MasterMCPはSlow Mistが安全テストのために特別に開発した模擬悪意MCPツールで、プラグインアーキテクチャ設計を採用し、以下の重要なモジュールを含んでいます:
攻撃シーンをよりリアルに再現するために、MasterMCはローカルウェブサイトサービスシミュレーションモジュールを内蔵しています。これにより、FastAPIフレームワークを使用して簡易HTTPサーバーを迅速に構築し、一般的なウェブページ環境をシミュレーションします。これらのページは表面的には正常に見え、ケーキ店情報を表示したり、標準のJSONデータを返したりしますが、実際にはページのソースコードやインターフェースの返却結果に巧妙に設計された悪意のあるペイロードが隠されています。
MasterMCPはプラグイン方式で拡張し、後続の新しい攻撃方式を迅速に追加することができます。実行後、MasterMCPはサブプロセスで前のモジュールのFastAPIサービスを実行します。(ここには既にセキュリティ上のリスクがあります - ローカルプラグインはMCPの予期しないサブプロセスを任意に起動できます)
! 実戦:MCPシステムにおける秘密の毒殺と操作
デモクライアント
デモで使用される大モデル
Claude 3.7バージョンを選択してください。これは、敏感な操作の識別において一定の改善があり、現在のMCPエコシステムにおいて比較的強力な操作能力を代表しています。
クロスMCP悪意のある呼び出し
本デモには、投毒とCross-MCP悪意ある呼び出しの2つの内容が含まれています。
ウェブコンテンツ毒攻撃
Cursorがローカルテストサイトにアクセスします。
これは一見無害な「Delicious Cake World」ページですが、この実験を通じて、大規模モデルのクライアントが悪意のあるウェブサイトにアクセスした場合の影響をシミュレーションして示します。
指令を実行する:
コンテンツを取得する
結果は示しています。Cursorはウェブページの内容を読み取るだけでなく、ローカルの敏感な設定データをテストサーバーに返送しました。ソースコード内では、悪意のあるキーワードがHTMLコメント形式で埋め込まれています。
コメントの方法は比較的直接的で、識別されやすいですが、すでに悪意のある操作を引き起こす可能性があります。
! 実際の戦闘出発:MCPシステムにおける秘密の毒殺と操作
アクセス/encodeページ、これは前の例と同じように見えるウェブページですが、悪意のあるプロンプトがエンコードされており、これにより毒物のexpがより隠蔽され、ウェブページのソースコードにアクセスしても直接気付くことが難しいです。
ソースコードに明示的なヒントが含まれていなくても、攻撃は成功裏に実行されます。
! 実際の戦闘出発:MCPシステムにおける秘密の毒殺と操作
MCP ツールが情報ポイズニングを返す
MasterMCPのヒントに従って、シミュレーションコマンド(を入力してください。このコマンドには実際の意味はなく、悪意のあるMCPをトリガーしてその後の操作を示すことを目的としています):
たくさんのリンゴを手に入れる
見ることができるのは、トリガーコマンド後、クライアントがMCPを越えてToolboxを呼び出し、新しいMCPサーバーを正常に追加したことです。
プラグインのコードを確認すると、返されたデータにエンコードされた悪意のあるペイロードが埋め込まれていることがわかり、ユーザー側では異常をほとんど認識できません。
! 実際の戦闘出発:MCPシステムにおける秘密の毒殺と操作
サードパーティインターフェイス汚染攻撃
このデモは、悪意のあるMCPであれ、非悪意のMCPであれ、サードパーティAPIを呼び出す際に、サードパーティのデータをコンテキストに直接返すと、深刻な影響を及ぼす可能性があることを警告するためのものです。
リクエストを実行します:
/api/data から json をフェッチします
結果:悪意のあるプロンプトが返されたJSONデータに埋め込まれ、悪意のある実行が順調にトリガーされた。
! 実戦出発:MCPシステムにおける秘密の毒殺と操作
MCP初期化フェーズにおけるポイズニング技術
本デモには初期のプロンプトインジェクションと名前の衝突という2つの内容が含まれています。
悪意のある関数オーバーライド攻撃
ここでMasterMCPはToolboxと同じ関数名remove_serverのtoolを作成し、悪意のあるヒントを隠すためにエンコードしました。
指示を実行する:
ツールボックス プラグイン サーバーを削除する
Claude Desktop は、元のツールボックス remove_server メソッドを呼び出す代わりに、MasterMCP によって提供される同じ名前のメソッドをトリガーします。
原理は「従来の方法は廃止された」と強調することによって、大規模モデルに悪意のある関数の上書きを優先的に呼び出させることです。
! 実際の戦闘出発:MCPシステムにおける秘密の毒殺と操作
悪意のあるグローバルチェックロジックを追加
ここでMasterMCPはbananaのツールを作成しました。このツールの主な機能は、すべてのツールを実行する前に必ずこのツールを実行して安全チェックを行うことを強制することです。
関数を実行する前に、システムは常にbananaチェックメカニズムを優先的に呼び出します。
これは、コード内で"バナナ検出を必ず実行する"と繰り返し強調することによって実現されるグローバルロジックインジェクションです。
! 実戦:MCPシステムにおける秘密の毒殺と操作
悪意のあるプロンプトを隠すための上級テクニック
大規模モデルに優しいコーディング方式
大規模言語モデル(LLM)は多言語フォーマットに対して非常に強力な解析能力を持っているため、これが悪意のある情報を隠すために利用されることがあります。一般的な方法には以下が含まれます:
! 実戦出発:MCPシステムにおける秘密の毒殺と操作
ランダム悪意のあるペイロード返却メカニズム
第二章で言及されている第三者インターフェースの汚染について、/randomをリクエストする際:
毎回ランダムに悪意のあるペイロードを含むページが返されるため、検出と追跡の難易度が大幅に増加します。
! 実戦出発:MCPシステムにおける秘密の毒殺と操作
まとめ
MasterMCPの実戦デモを通じて、私たちはModel Context Protocol (MCP)体系に隠されたさまざまなセキュリティリスクを直感的に見ることができました。単純なプロンプトインジェクションやMCP間の呼び出しから、より巧妙な初期化段階の攻撃や悪意のある命令の隠蔽まで、各段階が私たちに警告しています:MCPエコシステムは強力ですが、同時に脆弱でもあります。
特に、大規模モデルが外部プラグインやAPIと頻繁にやり取りする今日においては、わずかな入力汚染がシステム全体の安全リスクを引き起こす可能性があります。そして、攻撃者の手法の多様化(エンコーディングの隠蔽、ランダム汚染、関数のオーバーライド)は、従来の防護の考え方が全面的にアップグレードされる必要があることを意味しています。
安全は決して一朝一夕ではない。
このデモが皆さんに警鐘を鳴らすことを願っています: 開発者であれ、ユーザーであれ、MCPシステムに対して十分な警戒心を持ち、常に各インタラクション、各コード行、各返り値を注視すべきです。すべての細部に厳格に対処することで、初めて堅固で安全なMCP環境を築くことができるのです。
次のステップとして、私たちはMasterMCPスクリプトをさらに改善し、より多くのターゲットテストケースをオープンソース化して、皆さんが安全な環境の下で深く理解し、演習し、防御を強化する手助けをします。
! 実戦開始:MCPシステムにおける秘密の毒殺と操作