SSH Key Exfiltration via MCP Tool Poisoning について
本リポジトリは、MCP サーバーのツールポイズニングによりリモートコード実行とデータ窃取が起こり得ることを示す、セキュリティ研究向けの概念実証です。教育や研究の目的を想定しており、緩和策も記載されています。
主な機能
- 01ラグプル型のツール説明ポイズニングを再現
- 02base64 エンコードによる難読化を示す
- 03SSH 公開鍵の収集と送信の流れを説明
- 04MCP ユーザー向けの緩和策を列挙
活用シーン
- 01MCP ツールポイズニングのリスクを調査するセキュリティ研究
- 02MCP サーバーのサプライチェーンリスクに関する教育
- 03AI コーディングツールの自動実行設定の確認
MCP 対応
悪意ある MCP サーバーの実装例で、汚染された DockerCommandAnalyzer ツールの説明文によって、それを読み取る AI アシスタントの動作を操作します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
インストール方法は未掲載です
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ツール一覧はまだ取得されていません
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP ツールポイズニングによる SSH キーの窃取
このリポジトリでは、ツールポイズニングによってリモートでのコード実行とデータ窃取を可能にする、MCP(Model Context Protocol)サーバーのセキュリティ脆弱性を実演します。 これは教育およびセキュリティ研究のみを目的としています。
ブログへのリンク:
リポジトリの内容
server.py- ポイズニングされたツールを含む、悪意のある MCP サーバーの実装.cursor/mcp.json- Cursor AI 連携用の設定ファイル
仕組み
この攻撃では、「ラグプル」手法を実演します。
- ユーザーが Cursor AI などの MCP クライアントを通じて、悪意のある MCP サーバーに接続します
- サーバーが
DockerCommandAnalyzerツールのドキュメントを悪意のあるコードに書き換えます - AI アシスタントがこのドキュメントを読むと、Base64 エンコードされたコマンドの実行を推奨するように誘導されます
- エンコードされたコマンドは、密かに次の処理を行います。
- ユーザーの SSH 公開鍵を収集します
- それらをリモートサーバーに流出させます
- 攻撃の証拠を削除します
技術的な実装
攻撃の主な要素は次のとおりです。
- 2 段階のポイズニング:マーカーファイルを永続化に利用し、ツールがポイズニングされた状態を維持します
- ソーシャルエンジニアリング:緊急性の高い表現を使って AI アシスタントを誘導します
- Base64 による難読化:悪意のあるコマンドを簡単には見抜けないように隠します
- 窃取に wget を使用:標準的な HTTP POST を使って、攻撃者が管理するサーバーにデータを送信します
緩和策の推奨事項
この種の攻撃から保護するには、次の対策を講じてください。
- Cursor などの AI 開発ツールでは、自動実行機能を無効にする
- 接続する前に、MCP サーバーの提供元を必ず確認する
- 信頼できない提供元のコードは、実行前にレビューする
- 新しい AI ツールをテストする際は、サンドボックス環境を使用する
- 想定外の外向き接続をブロックするため、送信トラフィックのフィルタリングを実装する
コメント
Markdown 対応
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。