エージェントにスキルを入れる前に、中身を点検する仕組みがまだ薄い。NVIDIAが公開したオープンソースのSkillSpectorは、その穴を埋めるためのセキュリティスキャナーです。

この記事では、SkillSpectorが何を検出し、どう使うかを整理します。

この記事でわかること

  • SkillSpectorが対象にする脅威と検出カテゴリ
  • 静的解析とLLM解析の2段階パイプラインの役割
  • インストールからスキャン実行、CI連携までの手順

Agent Skillsを入れる前に起きているリスク

Agent Skills(エージェントスキル)は、Claude CodeやCodex CLI、Gemini CLI、Cursorなどのエージェント向けコーディングツールに追加する能力パッケージです。マーケットプレイスから取得してそのまま使う運用が一般的で、見た目は便利な拡張機能に見えます。

一方で、スキルはエージェントの権限のもとで動くため、悪意ある指示や危険なコードが紛れ込むと被害が広がります。Liuらの研究「Agent Skills in the Wild」(2026年)では、主要マーケットプレイスから収集した42,447件のスキルを分析し、26.1%に少なくとも1件の脆弱性5.2%に悪意ある挙動の疑いがあると報告されています。実行可能なスクリプトを含むスキルは、脆弱性を抱える確率が2.12倍高いという結果も出ています。

SnykのToxicSkills調査(2026年)でも、ClawHub上の3,984件を走査したところ、13.4%に重大なセキュリティ問題、36%にプロンプトインジェクション、認証情報窃取やバックドアを示すペイロードが76件確認されたと報告されています(参考)。

スキルは「説明文どおりに動く」と信じがちですが、隠れた指示、過剰な権限、依存関係の既知CVEといったリスクは、人間の目視だけでは拾い切れません。

SkillSpectorが解決する課題

https://github.com/NVIDIA/SkillSpector

SkillSpectorは、NVIDIAがApache 2.0ライセンスで公開したセキュリティスキャナーです。「このスキルは安全にインストールできるか」という問いに答えることを目的に設計されています。2026年3月21日にGitHubで公開され、Python 3.12以上で動作します。

入力形式はローカルディレクトリ、単一のSKILL.md、GitリポジトリのURL、zipファイルに対応します。インストール前の審査、社内レジストリへの取り込み前チェック、CIパイプラインへの組み込みを想定した作りです。

NVIDIAの公式ドキュメントでは、Verified Agent Skillsという枠組みの一部としても位置づけられています。スキルカード(機械可読なメタデータ)や暗号署名と組み合わせ、スキル配布のガバナンスを強化する流れの中で、SkillSpectorがスキャン結果を提供する役割を担います。

64パターン・16カテゴリで何を見るか

SkillSpectorは64の脆弱性パターン16カテゴリに分けて検査します。実務で関心の高い項目を中心に整理すると、次のとおりです。

プロンプト・エージェント挙動系

  • プロンプトインジェクション(安全制約の無視、隠れた指示、外部への文脈送信など)
  • システムプロンプト漏洩(直接・間接・ツール経由の抽出)
  • メモリポイズニング(会話をまたいで残る悪意あるコンテキスト)
  • ローグエージェント(自己改変、cron等による不正な永続化)
  • 過剰な自律性(人間の確認なしの高影響判断、無制限なツール利用)

データ・コード・サプライチェーン系

  • データ流出(環境変数の収集、ファイル列挙、外部URLへの送信)
  • 危険なコード(exec()eval()subprocess、動的インポートなどのAST解析)
  • テイントトラッキング(認証情報やファイル内容がネットワーク出力へ流れる経路の追跡)
  • YARAシグネチャ(マルウェア、ウェブシェル、クリプトマイナーの既知パターン)
  • サプライチェーン(未固定の依存関係、curl | bash、難読化コード、タイポスクワッティング)

MCP(Model Context Protocol)関連

MCPは、AIエージェントが外部ツールやデータソースと接続するための標準プロトコルです。SkillSpectorはMCPツールの宣言と実装のズレも検査します。

  • MCP最小権限(宣言されていない能力の使用、ワイルドカード権限)
  • MCPツールポイズニング(メタデータ内の隠し指示、Unicodeによる偽装、パラメータ説明への注入)

依存関係については、SC4パターンがOSV.dev(Open Source Vulnerabilities)のAPIへ問い合わせ、PyPIやnpmの既知CVEをリアルタイムで確認します。APIキーは不要で、オフライン時は組み込みのフォールバックリストに切り替わります。

2段階の解析パイプライン

SkillSpectorの検査は2段階で進みます。

ステージ1:静的解析(常時実行)

11種類の静的アナライザーが、正規表現、AST(抽象構文木)解析、YARA、テイント追跡を組み合わせて全ファイルを走査します。速度が速く結果が再現可能なため、CIでのゲートとして使いやすい段階です。--no-llmフラグを付ければ、この段階だけで完結します。

ステージ2:LLMセマンティック解析(任意)

スキルの説明とコードの挙動が一致しているか、トリガー条件が曖昧すぎないかといった「意図」のズレを、LLMが評価します。静的解析の誤検知を減らし、説明の根拠を人間が読める形で示す精度向上が狙いです。READMEによれば、LLM解析を加えると精度はおおよそ87%に上がるとされています。解析用プロンプトには、悪意あるスキルが検査自体を操作しないためのジェイルブレイク対策も入っています。

LLMプロバイダーはOpenAI、Anthropic、NVIDIA build.nvidia.com(nv_build)、OllamaなどのOpenAI互換エンドポイントに対応します。デフォルトのプロバイダーはnv_buildです。

リスクスコアと出力形式

検査結果は0〜100のリスクスコアに集約されます。重大度の重みは、CRITICALが+50、HIGHが+25、MEDIUMが+10、LOWが+5です。実行可能スクリプトが含まれる場合は1.3倍の乗数がかかります。

スコア 重大度 推奨アクション
0〜20 LOW SAFE(安全)
21〜50 MEDIUM CAUTION(注意)
51〜80 HIGH DO NOT INSTALL(インストール不可)
81〜100 CRITICAL DO NOT INSTALL(インストール不可)

出力形式は4種類です。ローカル確認はターミナル、自動化はJSON、レビュー資料はMarkdown、GitHub ActionsやIDE連携にはSARIF(Static Analysis Results Interchange Format)が使えます。

NVIDIA公式ドキュメントでは、重大・高の検出結果はリリースを止める、隠し指示は削除する、権限の過不足は宣言を直す、既知CVEのある依存関係は更新または理由を文書化する、といったトリアージ方針が示されています。

使い方

https://docs.nvidia.com/skills/scanning-agent-skills

リポジトリをクローンし、仮想環境を作成してからインストールします。

git clone https://github.com/NVIDIA/SkillSpector.git
cd SkillSpector
uv venv .venv && source .venv/bin/activate
make install

uvが使えない環境では、python3 -m venv .venvで代替できます。

スキャンの基本コマンドは次のとおりです。

# ローカルのスキルディレクトリを検査
skillspector scan ./my-skill/

# Gitリポジトリを直接検査
skillspector scan https://github.com/user/my-skill

# 静的解析のみ(高速)
skillspector scan ./my-skill/ --no-llm

# SARIF出力でCI連携
skillspector scan ./my-skill/ --format sarif --output report.sarif

LLM解析を使う場合は、プロバイダーとAPIキーを環境変数で指定します。

export SKILLSPECTOR_PROVIDER=openai
export OPENAI_API_KEY=sk-...
skillspector scan ./my-skill/

登録済みの全スキルを一括で点検し、新規インストール時にSARIF出力をCIへ流す運用が、公式ドキュメントでも推奨されています。

料金とライセンス

SkillSpector本体はApache 2.0のオープンソースで、利用料はかかりません。OSV.devのCVE照会も無料です。

LLMセマンティック解析を使う場合のみ、選んだプロバイダー(OpenAI、Anthropic、NVIDIA build.nvidia.comなど)のAPI利用料が発生します。--no-llmで静的解析だけに限定すれば、外部APIコストはゼロで運用できます。

類似アプローチとの違い

従来のSAST(静的アプリケーションセキュリティテスト)ツールは、一般のアプリケーションコード向けに設計されています。SkillSpectorはAgent Skills特有の脅威——プロンプトインジェクション、MCPツールポイズニング、トリガー条件の悪用、説明と実装の不一致——にパターンを絞った点が特徴です。

汎用の依存関係スキャナーはCVEの有無は見られますが、スキル内の隠し指示やエージェント権限の過不足まではカバーしません。SkillSpectorはスキルという配布単位を前提に、静的解析・LLM解析・OSV.dev照会を1つのCLIにまとめています。

制限と注意点

SkillSpectorは静的解析が中心で、実行時の挙動は観測しません。非英語の悪意あるパターン、画像内のテキスト、暗号化・バイナリ化されたコードは検出対象外です。オフライン環境ではSC4のCVE照会がフォールバックリストに限定されます。

スキャン結果はインストール判断の材料であり、完全な保証ではありません。重大な検出があっても、組織のポリシーで例外承認する場合は、その理由を文書化する運用が求められます。

エージェント開発者が取るべき一手

スキルの数は増える一方で、審査体制が追いついていないのが現状です。SkillSpectorは、そのギャップを埋めるための実用的な入口です。

まず手元のスキルをskillspector scanで走査し、SARIF出力をCIに組み込む。新規スキルの導入前に静的解析を必須化し、必要ならLLM解析で説明と実装のズレを確認する。この2ステップだけでも、プロンプトインジェクションやデータ流出のリスクをかなり早い段階で見つけられます。

Agent Skillsのエコシステムが成熟するほど、インストール前のセキュリティチェックは標準装備に近づくでしょう。SkillSpectorは、その第一歩をオープンソースで提供するツールです。