mcpField
S
SSH Key Exfiltration via MCP Tool Poisoning

SSH Key Exfiltration via MCP Tool Poisoning

ローカル
repello.ai開発ツール2579 週間前に更新

SSH Key Exfiltration via MCP Tool Poisoning について

本リポジトリは、MCP サーバーのツールポイズニングによりリモートコード実行とデータ窃取が起こり得ることを示す、セキュリティ研究向けの概念実証です。教育や研究の目的を想定しており、緩和策も記載されています。

主な機能

  1. 01ラグプル型のツール説明ポイズニングを再現
  2. 02base64 エンコードによる難読化を示す
  3. 03SSH 公開鍵の収集と送信の流れを説明
  4. 04MCP ユーザー向けの緩和策を列挙

活用シーン

  1. 01MCP ツールポイズニングのリスクを調査するセキュリティ研究
  2. 02MCP サーバーのサプライチェーンリスクに関する教育
  3. 03AI コーディングツールの自動実行設定の確認

MCP 対応

悪意ある MCP サーバーの実装例で、汚染された DockerCommandAnalyzer ツールの説明文によって、それを読み取る AI アシスタントの動作を操作します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Image

MCP ツールポイズニングによる SSH キーの窃取

このリポジトリでは、ツールポイズニングによってリモートでのコード実行とデータ窃取を可能にする、MCP(Model Context Protocol)サーバーのセキュリティ脆弱性を実演します。 これは教育およびセキュリティ研究のみを目的としています。

ブログへのリンク:

MCP ツールポイズニングによる RCE

リポジトリの内容

  • server.py - ポイズニングされたツールを含む、悪意のある MCP サーバーの実装
  • .cursor/mcp.json - Cursor AI 連携用の設定ファイル

仕組み

この攻撃では、「ラグプル」手法を実演します。

  1. ユーザーが Cursor AI などの MCP クライアントを通じて、悪意のある MCP サーバーに接続します
  2. サーバーが DockerCommandAnalyzer ツールのドキュメントを悪意のあるコードに書き換えます
  3. AI アシスタントがこのドキュメントを読むと、Base64 エンコードされたコマンドの実行を推奨するように誘導されます
  4. エンコードされたコマンドは、密かに次の処理を行います。
    • ユーザーの SSH 公開鍵を収集します
    • それらをリモートサーバーに流出させます
    • 攻撃の証拠を削除します

技術的な実装

攻撃の主な要素は次のとおりです。

  1. 2 段階のポイズニング:マーカーファイルを永続化に利用し、ツールがポイズニングされた状態を維持します
  2. ソーシャルエンジニアリング:緊急性の高い表現を使って AI アシスタントを誘導します
  3. Base64 による難読化:悪意のあるコマンドを簡単には見抜けないように隠します
  4. 窃取に wget を使用:標準的な HTTP POST を使って、攻撃者が管理するサーバーにデータを送信します

緩和策の推奨事項

この種の攻撃から保護するには、次の対策を講じてください。

  1. Cursor などの AI 開発ツールでは、自動実行機能を無効にする
  2. 接続する前に、MCP サーバーの提供元を必ず確認する
  3. 信頼できない提供元のコードは、実行前にレビューする
  4. 新しい AI ツールをテストする際は、サンドボックス環境を使用する
  5. 想定外の外向き接続をブロックするため、送信トラフィックのフィルタリングを実装する

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。