MCP Poisoning Attack - PoC について
MCPのツールポイズニングリスクを調べる、開発者や防御担当者向けのセキュリティ研究用PoCです。隠れた指示による攻撃を実演し、クライアント側の防御フレームワークも含みます。
主な機能
- 01データ窃取攻撃の実演
- 02隠れたプロンプトインジェクション
- 03ツールの乗っ取りと制御の上書き
- 04サニタイズと検証による防御
- 05サンプル、ドキュメント、テスト
活用シーン
- 01MCPツール説明を介した攻撃経路の調査
- 02ツール説明への防御処理のテスト
- 03サンプルを使ったセキュリティ教育
MCP 対応
悪意あるツール説明を介したMCPクライアントへの攻撃を実演します。サニタイズ、検証、監視機能を備えたSecureMCPClientも提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🛡️ MCP ツールポイズニングのセキュリティ研究
⚠️ 重要なセキュリティに関する注意:このリポジトリには、Model Context Protocol(MCP)の重大な脆弱性を実証するセキュリティ研究が含まれています。コードは教育および防御目的に限って使用してください。これらの手法を悪意を持って使用しないでください。
🌟 GenSecAI について
GenSecAI は、生成 AI を活用して AI を利用した攻撃から防御し、新たに出現する AI の脅威からデジタルの未来を守るためのオープンソースツールを構築する非営利コミュニティです。
この研究は、AI セキュリティの脆弱性が悪用される前に特定し、軽減するという私たちの使命の一環です。
🚨 概要
この研究では、Model Context Protocol(MCP)における重大なセキュリティ脆弱性を実証します。攻撃者は次のことが可能になります。
- 🔓 機密データの窃取(SSH キー、API 認証情報、設定ファイル)
- 🎭 隠されたプロンプトインジェクションによる AI エージェントの動作の乗っ取り
- 📧 ユーザーに気づかれずに通信先を変更
- 🔄 信頼されたツールのセキュリティ制御を上書き
- ⏰ 最初の信頼が確立された後に作動する、時間差攻撃の展開
影響:MCP を使用する AI エージェント(Claude、Cursor、プラグインを備えた ChatGPT)は、悪意のあるツールの説明を通じて侵害される可能性があります。
🎯 クイックスタート
インストール
# Clone the repository
git clone https://github.com/gensecaihq/mcp-poisoning-poc.git
cd mcp-poisoning-poc
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run the demonstration
python examples/basic_attack_demo.py
基本的なデモ
from src.demo.malicious_server import MaliciousMCPServer
from src.defenses.sanitizer import MCPSanitizer
# Create a malicious MCP server
server = MaliciousMCPServer()
# See how tool descriptions contain hidden instructions
for tool in server.get_tools():
print(f"Tool: {tool['name']}")
print(f"Hidden payload detected!")
# Defend against attacks
sanitizer = MCPSanitizer()
safe_description = sanitizer.clean(tool.description)
📊 主な調査結果
| 攻撃ベクトル | 深刻度 | 悪用の難易度 | 影響 |
|---|---|---|---|
| データの窃取 | 🔴 重大 | 低 | 認証情報の完全な窃取 |
| ツールの乗っ取り | 🔴 重大 | 低 | エージェントの完全な侵害 |
| 指示の上書き | 🟠 高 | 中 | セキュリティの回避 |
| 遅延ペイロード | 🟠 高 | 中 | 持続的な侵害 |
🔬 技術的な詳細
この脆弱性は、MCP の根本的な設計上の欠陥を悪用します。
- ツールの説明は AI モデルによって信頼できる入力として扱われます
- 説明に隠された指示はユーザーには見えませんが、AI によって処理されます
- ツールの説明は検証もサニタイズもされません
- ツール間の汚染によって、悪意のあるツールが他のツールに影響を与える可能性があります
詳しい技術分析については、PROOF_OF_CONCEPT.md を参照してください。
🛡️ 防御策
包括的な防御フレームワークを提供します。
from src.defenses import SecureMCPClient
# Initialize secure client with all protections
client = SecureMCPClient(
enable_sanitization=True,
enable_validation=True,
enable_monitoring=True,
strict_mode=True
)
# Safe tool integration
client.add_server("https://trusted-server.com", verify=True)
📁 リポジトリの構成
/src- 攻撃と防御のコア実装/docs- 詳細なドキュメントと分析/tests- 包括的なテストスイート/examples- すぐに実行できるデモ
🧪 テストの実行
# Run all tests
pytest
# Run with coverage
pytest --cov=src tests/
# Run security-specific tests
pytest tests/test_attacks.py -v
🤝 貢献
MCP のセキュリティ向上につながる貢献を歓迎します。ガイドラインについては、CONTRIBUTING.md を参照してください。
GenSecAI コミュニティへの参加
- 🌐 ウェブサイト:https://gensecai.org
- 📧 メール:[email protected]
- 💬 ディスカッション:GitHub Discussions
📚 ドキュメント
⚖️ 法的および倫理的な注意事項
この調査は、責任ある脆弱性開示の原則に基づいて実施されています。
- 教育目的:コードはセキュリティ研究と防御のみを目的としています
- 悪意のある利用の禁止:これらの手法をシステムへの攻撃に使用しないでください
- 開示までの期間:一般公開前にベンダーへ通知しました
- 防御重視:より優れた防御を可能にすることを主な目的としています
🏆 クレジット
- 組織:GenSecAI - 生成 AI セキュリティコミュニティ
- 研究チーム:GenSecAI セキュリティ研究部門
- 参考元:Invariant Labs の独自の調査結果
- 特別な感謝:セキュリティ研究コミュニティと責任ある脆弱性開示の提唱者の皆様へ
📮 お問い合わせ
- セキュリティ上の問題:[email protected]
- 一般的なお問い合わせ:[email protected]
- ウェブサイト:https://gensecai.org
- バグ報告:GitHub Issues
📄 ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細は LICENSE をご覧ください。
❤️ を込めて GenSecAI が制作
脆弱性を一つずつ解決し、AI を守る
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。