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