MCPVault
ドキュメントメニュー

信頼性

セキュリティスキャン

スターは人気を測ります。グレードはリポジトリのシグナルを測ります。認証はサーバーが実際のMCPハンドシェイクに応答することを証明します。セキュリティスキャンは4つ目の問いに答えます: このコードはあなたのマシンで動いたとき何をするのか。申請済みおよび認証済みのすべてのサーバーは毎週スキャンされ、リスティングに公開スコアカードが表示されます。

スキャナーはNVIDIA SkillSpector(Apache 2.0のオープンソース、エージェントスキルとMCPサーバー向けのセキュリティスキャナー)を静的モードで実行します。何も実行しません: リポジトリの最新スナップショットを読み、コードを走査し、依存関係についてOSV.devに問い合わせるだけです。カーネルサンドボックス内でサーバーを実際に起動する認証とは別物です。

検査内容

01

既知の脆弱な依存関係

ロックファイルとマニフェストをOSV.devと照合し、固定されたバージョンに該当するCVEやGHSAアドバイザリを識別子付きで表示します。最も多い指摘で、最も直しやすい項目です。

02

データ流出

環境変数全体の一括読み取り、会話コンテキストの外部送信、環境変数やファイル内容がネットワークやシェルのシンクに到達するテイントフロー。

03

認証情報と権限

SSH鍵やクラウド認証情報ファイルの読み取り、Dockerソケットへのアクセス、特権コンテナ、出荷コード内のsudo。ローカルの.envの読み取りは設定として扱い、盗用とはみなしません。

04

隠れた指示

プロンプトインジェクション、拒否回避の文言、他のエージェントの設定フォルダの覗き見。エージェントが実際に読むファイル(AGENTS.md、CLAUDE.md、SKILL.md、.claude、.cursor、.codexフォルダ)で検査します。

05

危険な実行と難読化

eval、動的インポート、サブプロセス呼び出し、エンコードされたペイロード、混在スクリプトのテキスト、YARAルールによるマルウェアシグネチャ。

スコアの仕組み

SkillSpectorは小さなスキルフォルダ向けに作られています。MCPサーバーのリポジトリ全体に向けると独自スコアは飽和します: READMEのHTMLコメントは隠れた指示、外部APIの呼び出しはすべてデータ流出と数えられ、中程度の指摘が十数個で100に達します。MicrosoftのPlaywright MCPはその方法だと100 CRITICALです。そこでMCPVaultはSkillSpectorの指摘をすべて保持しつつ、独自のMCPサーバー向けポリシーを適用します。

  1. 指摘は所在するファイルで分類します。出荷コードとエージェント向け指示ファイルはスコア対象。README、その他のドキュメント、設定、CI、テストは注記になります。
  2. 各ルールにはMCPサーバーを導入する人にとっての意味を反映した重みがあります。サブプロセス呼び出しはツールの本質であることが多く、環境変数全体の収集はそうではありません。
  3. ルールごとの逓減: 1回目は満点、2回目は半分、3回目は4分の1、それ以降は加算なし。同じパターンが100回出ても、1つの深刻な指摘を埋もれさせません。
  4. 既知の脆弱な依存関係はパッケージごとに加点(critical 12、high 8、medium 4、low 2)し、上限は30点。古いロックファイルは「導入不可」ではなく「更新してください」と読めます。

点数の合計が0から100のスコアで、低いほど良好です: 0から20は低リスク、21から50は注意、51から80は高リスク、81以上は重大。透明性のためSkillSpectorの生スコアも併せて保存します。重みの例:

環境変数の一括収集(E2)20
会話コンテキストの外部送信(E4)15
SSHやクラウド認証情報ファイルの読み取り(PE3)15
環境変数からシェルやネットワークへのテイントフロー(TT2)10
隠された実行可能ファイル(SC9)8
サブプロセスや動的インポート(AST3、AST4)6
ローカル.envの読み取り(PE3、軽度)3
外部APIへのリクエスト(E1)0、通信先として一覧表示
READMEのHTMLコメント(ドキュメント内のP2)0、注記

スコア対象外

スキャン前にスナップショットをユーザーが実際に導入するものに絞ります: テスト、CIワークフロー、docsフォルダ、サンプル、ビルド成果物、ベンダー化された依存関係は除外します。ドキュメントや設定に残ったパターン一致は理由を一行添えた注記として記録し、スコアには入れません。

外部へのリクエストもスコアにしません。APIをラップするMCPサーバーはそのAPIを呼ぶ必要があるからです。代わりにカードにはコードが通信するホストを一覧表示し、権限を与える前にデータの行き先を確認できるようにします。

カードの読み方

スコアボックスには数値とラベルが表示されます。その下にスコア対象の指摘数、脆弱な依存関係の数、外部ホスト数、注記数。脆弱な依存関係はパッケージ、バージョン、アドバイザリ識別子を示します。指摘はルール、パターン、ファイルと行、意味を示します。公開カードは上位の指摘を、オーナーのダッシュボードはすべての指摘を修正方法付きで表示します。

低スコアは、出荷コードに認証情報の窃取、データ流出、隠れた指示に見えるものが見つからなかったという意味です。root権限を与えて安全という意味ではありません。通信先の行とツール一覧を読み、クライアント側の権限確認は有効のままにしてください。

サーバーオーナー向け

ダッシュボードにはスコア対象の指摘すべてが、一致したスニペットと修正方法、除外された注記とともに表示されます。実際の問題を修正すれば、次の週次実行が新しいコミットを自動的に取り込みます。脆弱な依存関係の更新がスコアを動かす最速の方法であることが多いです。

変更できない誤検知(有害コンテンツルールに引っかかる安全上の注意書きなど)は、READMEに一言添えるとユーザーの理解に役立ちます。カードに「取得不可」と表示される場合、リスティングのリポジトリURLが非公開、名称変更済み、またはスナップショットには大きすぎます。リスティング編集からURLを直せば次回の実行で再試行します。

限界

これは静的なパターンベースの分析です。既知の問題に似たものを見つけますが、未知の問題がないことは証明せず、ペネトレーションテストでもありません。認証情報のパスに見える文字列がコメントのこともあれば、サブプロセス呼び出しが機能そのもののこともあります。だからこそすべての指摘にファイルと行を示し、自分で確認できるようにしています。

スキャンは認証を補完します。認証はサーバーが起動して応答することを証明し、スキャンはその間にコードが何に手を伸ばすかを示します。どちらも、ファイル、鍵、シェルへのアクセスを与える前にソースを読むことの代わりにはなりません。

スキャン済みサーバーを見る