MCP-Scanを使ってMCPサーバーの脆弱性を調べてみる
はじめに
先日公開し多くの反響をいただいた「MCPサーバーを利用する前に理解しておくべきセキュリティリスク」では、MCPサーバーのセキュリティリスクについてご紹介しました。
今回はその中でご紹介したような脆弱性を調査するためのツールであるMCP-Scanについてご紹介します。
MCP-Scanとは
MCP-Scanは、Invariant Labsが開発したセキュリティスキャナーで、MCPサーバーにおける重大な脆弱性を検出・防止するためのツールです。
GitHub上でオープンソースとして公開されています。
これにより、MCPサーバーの構成をスキャンし悪意のある命令や不正な変更を検出することができます。
MCP-Scanでできること
MCP-Scanは、以下のようなMCPサーバーの脆弱性を検出することができます:
- ツール汚染攻撃(Tool Poisoning Attacks):MCPツールの説明文に埋め込まれた悪意ある命令を検出
- ラグプル攻撃(MCP Rug Pulls):ユーザーの承認後にツールの説明が不正に変更される攻撃を検出
- シャドーイング攻撃(Shadowing Tool Descriptions / Cross-Origin Escalations):信頼されたツールの説明文を上書きする悪意あるツールの存在を検出
- プロンプトインジェクション攻撃(Prompt Injection Attacks):ツール説明内に含まれる悪意あるプロンプトを検出
攻撃手法の詳細は冒頭でもご紹介した『MCPサーバーを利用する前に理解しておくべきセキュリティリスク』という記事でご紹介していますので、ぜひご覧ください。
MCP-Scanの特徴
一番の特徴としてはその手軽さだと思います。
オープンソースなので誰でもすぐに利用開始することができ、コマンドで1つ簡単にスキャンできるのは嬉しいポイントです。
- 素早く簡単なセキュリティチェック:コマンド1つでMCPサーバーのスキャンが可能
- ツールピンニング(Tool Pinning):ツールのハッシュ化による変更を追跡することで、不正な変更(ラグプル攻撃)を検出
- クロスオリジン検出:複数のMCPサーバー間でのシャドーイング攻撃を検出
MCP-Scanの使い方
スキャン実行
使い方はすごく簡単でした。
uvパッケージマネージャーのインストールさえできれば、あとは特別なセッティングは不要でコマンド実行するのみでスキャンが可能です。
- uvパッケージマネージャーのインストール:uvをインストールします。インストール方法については本記事では省略します
- スキャンの実行:以下のコマンドでスキャンを実行
uvx mcp-scan@latest
以下が私の環境でのスキャン結果です。
ちゃんと現状で使用しているfilesystem, brave-search, claude_codeのMCPサーバーをスキャンしてくれました。
公式のMCPサーバーだけ利用しているのでfailedはありませんが、クロスオリジンの警告が出ていました。
また、こちらはXの投稿で載せられていたスキャン結果の例で、悪意のあるツールが検出された場合のものです。
プロンプトインジェクションが検出されており、加えて前回のスキャン以降で説明文の更新があったことがわかります。
出典: https://x.com/lbeurerkellner/status/1910379084758343827
inspect
オプションによるツール説明文の詳細表示
uvx mcp-scan@latest inspect
では、関連するツールの説明を全て表示することができました。
これで説明文に不正な命令が含まれていないかどうかをチェックできそうです。
uvx mcp-scan@latest inspect
以下実行結果です。
注意点
MCP-Scanを使用する際の注意点を挙げておきます。
スキャン対象
繰り返しになりますが、執筆時点においてMCP-ScanはClaude, Cursor, Windsurf, およびその他のファイルベースのMCPクライアント設定をスキャンすることができます。
カスタムファイルを使用している場合はCLI parametersを利用してファイルを指定しないとスキャンできない可能性があるため、注意してください。
詳細はリポジトリのREADMEを参照してください。
データの共有
スキャン中、ツール名と説明がInvariant Labsに送信され、セキュリティ研究目的で使用されるようです。
個人データは共有されませんが、ツールの説明を共有したくない場合があれば使用を控えてください。
参考記事
Discussion