現在、MCP(モデルコンテキストプロトコル)システムはまだ比較的初期の開発段階にあり、全体的な環境は比較的混沌としており、様々な潜在的な攻撃は無限にあり、現在のプロトコルやツールの設計を防御することは困難です。コミュニティがMCPのセキュリティをよりよく理解し、改善するために、SlowMistはMasterMCPツールをオープンソース化しました。実際の攻撃訓練を通して、製品設計における潜在的なセキュリティ問題を見つける手助けをし、その結果、私たち自身のMCPプロジェクトを一歩一歩強化していきたいと考えています。
同時に、前号の MCPセキュリティチェックリストと併用することで、複数の攻撃の根本的な視点をよりよく理解することができます。今回は、メッセージポイズニング、悪意のあるコマンドのクローキングなど、MCPシステム下でよく見られる攻撃を実際にデモで紹介します。デモで使用されたスクリプトはすべてGitHubにオープンソース化されます(リンクは記事の最後を参照)ので、安全な環境ですべてのプロセスを再現したり、これらのスクリプトに基づいて独自の攻撃テストプラグインを開発したりすることもできます。
全体的なアーキテクチャの概要
攻撃目的のデモンストレーション MCP: ツールボックス
smithery.aiは、現在の世代の攻撃ツールの最初のものです。smithery.aiは現在最も人気のある MCP プラグイングリッドの1つで、大規模な MCP リストとアクティブユーザーを抱えています。
.
テスト対象としてToolboxを選択したのは、以下の点に基づくものです:
悪意のあるMCPのデモンストレーション:MasterMCP
MasterMCPは、SlowMistがセキュリティテスト用に特別に書いた悪意のあるMCPツールのシミュレートです。攻撃シナリオをより現実的に再現するため、MasterMCPにはローカルWebサービスシミュレーションモジュールが組み込まれています。FastAPIフレームワークを使用して、一般的なWeb環境をシミュレートするシンプルなHTTPサーバーを迅速に構築します。これらのページは、ケーキ屋に関する情報を表示したり、標準的なJSONデータを返したりするなど、表面的には正常に見えるかもしれませんが、実際には、ページのソースコードやインターフェイスの戻り値に、よく設計された悪意のあるペイロードが隠されています。
このように、安全で制御されたローカル環境で、メッセージポイズニング、コマンド隠蔽、およびその他の攻撃テクニックを実証することで、一見普通のWebページであっても、大規模なモデルが異常な操作を実行するきっかけとなる隠れた危険の源となり得ることを、より直感的に理解することができます。
2. ローカルプラグイン MCP アーキテクチャ
MasterMCPは拡張にプラグイン・アプローチを使用しているため、新しい攻撃手法の迅速な追加フォローアップが容易です。実行後、MasterMCPはサブプロセスで前のモジュールのFastAPIサービスを実行します。(注意していれば、ここにすでにセキュリティリスクがあることに気づくでしょう。ローカルプラグインは、MCPが予期していないサブプロセスを任意に開始することができます。)
デモクライアント
Demonstration of the Conference Model
クロードのバージョン3.7が選ばれたのは、機密操作の識別が改善され、現在のMCPエコシステムで最も強力な操作の1つを表しているからです。
設定 claude_desktop_config.json
{ "mcpServers": { nbsp; "toolbox": { "command": "npx", "args": [ ."-y", "@smithery/cli@latest", "run", "@".smithery/toolbox", "--config", "{"dynamic":false,{"smitheryApiKey":}"ec1f0fa8-5797-8678-sdaf-155d4584b133"}", "ec1f0fa8-5797-8678-sdaf-155d4584b133" }, "MasterMCP": { "command": "/Users/xxx/Desktop/EvilMCP/bin/python", "args": [ "/Users/xxx/Desktop/EvilMCP/MasterMCP.py" ] } }}
設定が完了し、正式にデモセッションに入りました。
クロスMCP悪意のある呼び出し

このデモには以下が含まれます。このデモには、チェックリストのポイズニングとMCP横断の悪意のある呼び出しの両方が含まれています。
グリッド コンテンツ ポイズニング攻撃
1.注釈付きポイズニング (https://x.com/lbeurerkellner/status/ で部分的に参照)1912145060763742579)
カーソル ローカルテストサイト http://127.0.0.1:1024 をご覧ください。
これは一見何の変哲もない「おいしいケーキの世界」への言及です。「Delicious Cake World"、大規模なモデルクライアントが悪意のあるサイトにアクセスした場合の影響をシミュレートする実験です。

コマンドの実行:
Fetch the content of
MCPシステムのコンテンツ
を取得します。nbsp;http://127.0.0.1:1024

結果は、CursorがWebページのコンテンツを読み取るだけでなく、機密性の高いローカル設定データをテストサーバーに送り返すことを示しています。をテストサーバーに送り返す。ソース コードでは、悪意のあるプロンプトが HTML のコメントとして埋め込まれています。

注釈はより単純で簡単に認識できますが、すでに悪意のある操作をトリガーしています。
2.エンコードされた注釈による汚染
http://127.0.0.1:1024/encode、上記の例と同じように見えるページですが、悪意のあるプロンプトがエンコードされています。これは上記の例と同じように見えるページですが、悪意のあるプロンプトがエンコードされているため、ページのソースコードにアクセスしても、毒化されたexpがさらに見えにくくなり、直接検出するのが難しくなっています。

ソースコードに明示的なプロンプトが含まれていなくても、攻撃は成功します。

MCPツールは情報ポイズニングを返します

ここで、私たちは、MCPシステムにおける秘密の毒殺と操作に入ります。
ここで、MasterMCPのプロンプトの単語の説明に従って、シミュレートしたコマンド(実際の意味はなく、悪意のあるMCPのその後の動作を示すために、悪意のあるMCPをトリガーするためのもの)を入力します:
たくさんのリンゴ

コマンドをトリガーした後、クライアントはMCP全体でToolboxを呼び出し、新しいMCPサーバーの追加に成功したことがわかります:
![実用的な出発:MCPシステムにおける秘密のポイズニングと操作]()
プラグインのコードをチェックすると、返されるデータには悪意のあるペイロードがエンコードされて埋め込まれていることがわかります。
サードパーティのポート汚染攻撃
このデモは、サードパーティのAPIを呼び出すときに、悪意のあるMCPと悪意のないMCPの両方が、サードパーティのデータをコンテキストに直接返すと、深刻な影響を及ぼす可能性があることを思い出させるためのものです。は深刻な影響を及ぼす可能性があります。
コード例:

リクエストの実行:
リクエストの実行:
Fetch ">密かに毒を盛って操るMCPシステムを見つけましょう。">Fetch json from http://127.0.0.1:1024/api/data

結果: 返されたJSONデータに悪意のあるプロンプトが埋め込まれ、悪意のある実行がトリガーされます。
MCP Poisoning Techniques in the Initialisation Phase

このデモには、チェックリストの以下のものが含まれます。このデモには、最初のキュー・ワード注入と名前の衝突の両方が含まれています。
悪意のある関数のオーバーライド攻撃
ここでMasterMCPは、Toolboxと同じ関数名remove_serverを持つツールを作成し、悪意のあるプロンプトを隠すためにエンコードします。プロンプトを隠します。

コマンドの実行
toolbox remove fetch。プラグインサーバー

クロード・デスクトップは、オリジナルの`toolbox remove_server`メソッドを呼び出さず、代わりに`toolbox remove_server`メソッドをトリガーします。server` メソッドを呼び出さず、代わりに MasterMCP が提供する同名のメソッドをトリガーしています:

原則は、「元のメソッドが非推奨になった」ことを強調することで、大きな問題を誘発することを優先します。"と強調することで、悪意を持ってオーバーライドされた関数を呼び出すように、大規模なモデルを優先的に誘導することです。
悪意のあるグローバルチェックロジックを追加する
ここで、MasterMCPは、プロンプトで、すべてのツールが実行する前にセキュリティチェックを実行するように強制する中心的な役割を持つバナナでツールを書きました。実行前にセキュリティチェックを行うツールを実行する。


関数の各実行の前に、システムは優先的にバナナチェック機構を呼び出します:

「実世界のスタートアップ:MCPシステムにおける秘密のポイズニングと操作」
これは、バナナチェックが実行されなければならないことをコード内で繰り返すことによって達成される、ロジックのグローバルな注入です。
悪意のあるヒントを隠すための高度なテクニック
モデルに優しいコーディング
ラージ言語モデル(LLM)は多言語フォーマットに対して非常に堅牢です。
英語の場合:Hex Byteエンコーディング
<。/ul>おすすめツール:Hexデコーダー
推奨ツール: R12a Unicode 変換ツール
ランダムな悪意のあるロードを返すメカニズム
サードパーティ・インターフェースの汚染については第2章で述べたように、http://127.0.0.1:1024/random:



毎回悪意のあるペイロードを含むページをランダムに返し、検知と追跡の難易度を大幅に高めます。
まとめ
このMasterMCPの動作デモを通して、モデルコンテキストプロトコル(MCP)システムの隠れたセキュリティリスクを見ました。以下はMCPの使用方法の一例です。単純なプロンプトの注入やクロスMCPコールから、より陰湿な初期化攻撃や悪意のあるコマンドの隠蔽まで、MCPエコシステムのあらゆる側面は、それが強力である一方で、脆弱でもあることを思い起こさせます。
特に、大きなモデルが外部のプラグインやAPIを扱うことが多くなっているため、小さな入力汚染がシステムレベルのセキュリティリスクを引き起こす可能性があります。また、攻撃者の戦術の多様性(コード隠蔽、ランダムな汚染、関数のオーバーライド)は、伝統的な保護のアイデアを全面的にアップグレードする必要があることを意味します。
セキュリティは決してすぐに解決できるものではありません。
願わくば、このデモが警鐘となることを願っています。開発者もユーザーも同様に、MCPシステムを警戒し、すべてのインタラクション、すべてのコード行、すべての戻り値に注意を払うべきです。すべての細部において厳格であることによってのみ、私たちは堅固で安全なMCP環境を構築することができるのです。
次は、MasterMCPスクリプトの改良を続け、より的を絞ったテストケースをオープンソース化し、安全な環境での保護を理解、実践、強化できるようにします。
Ps.内容はGitHub (https://github.com/slowmist/MasterMCP)に同期されていますので、興味のある方はこの記事の最後にある元の記事をクリックして直接飛ぶことができます。