本文へスキップ
株式会社オブライト
AI2026-08-28約11分で読めます

NVIDIA SkillSpectorとは — Agent Skillを事前スキャンするOSSツール

SkillSpectorは、NVIDIAが2026年8月に公開したオープンソースのセキュリティスキャナである。Claude Code等が読み込むAgent Skillをインストール前に静的解析とLLMで診断し、0〜100のリスクスコアで可否を判定する仕組みと使い方、CIへの組み込み方までを解説する。


SkillSpectorは、NVIDIAが2026年8月3日に公開したオープンソース(Apache 2.0、Python 3.12+)のセキュリティスキャナである。Claude Code・Codex CLI・Gemini CLIなどが読み込む「Agent Skill」(SKILL.mdというMarkdownファイルと、任意で同梱されるPythonスクリプトの組み合わせ)をインストール前にスキャンし、静的解析と任意のLLM意味解析を組み合わせて0〜100のリスクスコアを算出、インストールして良いかどうかを判定する。GitHubのリポジトリはgithub.com/NVIDIA/SkillSpectorで、uv tool install一発で導入できる。

SkillSpectorのスキャン処理の流れ。Agent Skillを静的解析にかけ、任意のLLM意味解析を経て0〜100のリスクスコアを算出し、50以下ならSAFE/CAUTION(exit 0)、50超ならDO NOT INSTALL(exit 1)と判定してterminal/json/markdown/sarif形式で出力する。

なぜAgent Skillのスキャンが必要なのか

Agent Skillは、AIコーディングエージェントに新しい能力を追加するための拡張機構である。しかし実体はサードパーティが書いたMarkdown指示文とPythonコードであり、インストールすればエージェントが持つファイルアクセス・コマンド実行・ネットワーク接続の全権限をそのまま使って実行される。npmパッケージやブラウザ拡張と同じ「サプライチェーンリスク」が、レビュー体制の薄いエコシステムで急速に広がっている状態だ。NVIDIAが行った調査では、公開されているスキル全体の26.1%に何らかの脆弱性が、5.2%に悪意の疑いが見つかっている。さらに実行可能なスクリプトを同梱するスキルは、そうでないスキルに比べて2.12倍脆弱性を含みやすいという結果も出ている。プロンプトだけで完結するテキストのスキルより、コードを同梱するスキルの方が明確にリスクが高いということだ。Agent Skills/Toolsの総合ガイドで解説した通り、この拡張機構自体は開発体験を大きく引き上げるが、「インストール=信頼」ではない前提に立つ必要がある。NemoClawのOllama連携で発覚したCVE-2026-65105のように、ローカルで動くAIエージェント周りの脆弱性は攻撃者にとって「一度到達すれば以後の会話すべてを汚染できる」ため実害が大きく、Skillのようなサードパーティコードの受け入れ口はとりわけ慎重な検査が必要な領域である。

何を検出するか — 17カテゴリ・71パターン

SkillSpectorの検出ルールは17カテゴリ・71パターンに整理されている。プロンプトインジェクションやアンチリフューザル(拒否回避誘導)といったLLM特有の攻撃から、権限昇格やサプライチェーン汚染といった伝統的なソフトウェアセキュリティの観点、さらにMCPサーバー固有の最小権限違反やツールポイズニングまでを横断的にカバーする。

カテゴリパターン数検出内容の例
プロンプトインジェクション6エージェントへの隠れた指示注入
アンチリフューザル3安全な拒否応答を回避させる誘導
データ持ち出し4機密情報を外部へ送信する経路
権限昇格3想定外の権限取得を狙う記述
サプライチェーン9+依存パッケージの改ざん・タイポスクワッティング等
過剰なエージェンシー5許可範囲を超えた自律行動の誘発
出力処理3出力結果の不適切な後処理・実行
システムプロンプト漏えい3内部プロンプトの抽出を狙う記述
メモリ汚染3会話履歴・記憶領域への恒久的な汚染
ツール誤用3他ツールの意図しない呼び出し
ローグエージェント2エージェントの制御外での自律動作
トリガー悪用3特定条件での不正発火
振る舞いAST9exec/eval/subprocess等の危険なコード構造
テイント追跡5環境変数・ファイル内容から送信先への流出経路
YARAシグネチャ4マルウェア・Webシェル・クリプトマイナー
MCP最小権限4MCPサーバーの過剰な権限要求
MCPツールポイズニング4MCPツール定義自体への悪意ある細工

検出パイプラインは2段階である。まずAST(抽象構文木)を走査してexec/eval/subprocessの呼び出しを検出し、環境変数やファイル内容が最終的にネットワーク送信先へ流れ着くかをテイント追跡で確認、加えてYARAルールでマルウェア・Webシェル・クリプトマイナーのシグネチャ照合、正規表現パターンでの検査も行う。ここまではローカル完結の静的解析であり、スキルのコードを実行することは一切ない。第2段階として、任意でLLMによる意味解析を通すことで、静的解析だけでは判定しづらい文脈依存の悪意ある記述を拾い上げ、誤検知を減らす。NVIDIAの計測では、このLLM解析込みの検出精度は約87%とされている。

リスクスコアの読み方

検出結果は0〜100のリスクスコアに集約され、4段階の深刻度と推奨アクションに変換される。

スコア帯深刻度推奨アクション
0–20LOWSAFE(インストール可)
21–50MEDIUMCAUTION(内容を確認の上で判断)
51–80HIGHDO NOT INSTALL(インストール非推奨)
81–100CRITICALDO NOT INSTALL(インストール禁止)

加点ルールは検出の深刻度ごとに固定されており、CRITICAL相当の検出は+50点、HIGHは+25点、MEDIUMは+10点、LOWは+5点が積算される。さらに、そのスキルが実行可能なスクリプトを同梱している場合、算出されたスコアに1.3倍の係数がかかる。これは前述の「実行スクリプト同梱スキルは脆弱性を2.12倍含みやすい」という調査結果を反映した設計であり、テキストだけのスキルとコード同梱スキルを同じ基準で評価しない、という思想が明確に表れている部分である。CI/CDでゲートに使う場合の閾値は、後述の通りスコア50が既定の合格ラインになっている。

インストール

Python 3.12以上が必要である。uvまたはpipでGitHubから直接インストールできるほか、リポジトリをクローンしてmake install-dev、あるいはDockerイメージをビルドして使うこともできる。

# uvでインストール(推奨)
uv tool install git+https://github.com/NVIDIA/skillspector.git

# pipでインストール
pip install git+https://github.com/NVIDIA/skillspector.git

# ソースから開発用インストール
git clone https://github.com/NVIDIA/SkillSpector.git
cd SkillSpector
make install-dev

# Dockerイメージのビルド
make docker-build

使い方 — 最短手順

スキャン対象はローカルディレクトリ・単一のSKILL.mdファイル・ZIPアーカイブ・Git URLのいずれでも指定できる。1回のスキャンで上限100MiB、ZIP内のメンバー数は10,000件までという制約がある。

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

# Git URLを直接スキャン
skillspector scan https://github.com/user/my-skill

# ZIPアーカイブをスキャン
skillspector scan ./skill.zip

# SKILL.md単体をスキャン
skillspector scan ./SKILL.md

# LLM解析を使わず静的解析のみで高速に判定
skillspector scan ./my-skill/ --no-llm

# 既知スキルの現在の検出結果をベースラインとして保存(差分検知用)
skillspector baseline ./my-skill/ -o .skillspector-baseline.yaml

出力形式とCIへの組み込み

既定の出力はターミナル向けの人間可読形式(--format terminal)だが、jsonmarkdownsarifも選べる。SARIF形式で-o report.sarifのように出力すれば、GitHub CodeQLのSecurityタブなど、SARIF対応の静的解析結果ビューアにそのまま取り込める。CI連携で重要なのは終了コードで、スコア50以下(LOW/MEDIUM)であれば0、50を超える(HIGH/CRITICAL)場合は1、スキャン自体がエラーになった場合は2を返す。この仕組みを使えば、GitHub ActionsのワークフローでSkillSpectorをステップとして実行し、終了コード1でジョブを失敗させるだけで「危険なスキルはマージさせない」ゲートを構築できる。JSON出力にはrisk_scoreseverityrecommendationsafe_to_installfindingsが含まれるため、独自のダッシュボードや通知連携に組み込む際もこれらのフィールドをそのまま利用できる。

LLM意味解析とプライバシー

LLMによる意味解析はopenaianthropicanthropic_proxybedrocknv_build(NVIDIA Inference、既定)・claude_clicodex_cliのいずれかのプロバイダを選んで実行でき、SKILLSPECTOR_PROVIDER環境変数で切り替える。選択したプロバイダが利用できない環境では、自動的にLLMなしの静的解析結果にフォールバックする。ここで押さえておくべきなのは、LLM解析はスキルのファイル内容を外部のLLMプロバイダへ送信する点である。社内限定のスキルや機密情報を含む可能性があるスキルをスキャンする場合は、--no-llmを付けて静的解析のみに限定するのが妥当な判断になる。依存パッケージのCVE照合はOSV.dev(Open Source Vulnerabilities)にリアルタイムで問い合わせる仕組みで、APIキーは不要、オフライン環境では自動的にフォールバックする。静的解析部分そのものはローカル完結で、スキルのコードを実行することは一切ない。

MCPサーバーとしての利用

SkillSpectorはCLIとしてだけでなく、MCPサーバーとしても動作する。skillspector[mcp]extraを付けてインストールし、skillspector mcpを実行すればstdioトランスポートでMCPサーバーが起動する。HTTPトランスポートで待ち受けたい場合はskillspector mcp --transport http --host 127.0.0.1 --port 8000のように指定する。これにより、Claude Codeのようなエージェント自身が新しいAgent Skillを取り込もうとする際に、scan_skill(target, use_llm, output_format)ツールを呼び出して自分でスキャンを実行し、危険なスキルの取り込みを自律的に回避する、という使い方が可能になる。エージェントが自分の拡張機構を自分で監査する、という構図である。

# MCPサーバー機能込みでインストール
uv tool install 'skillspector[mcp] @ git+https://github.com/NVIDIA/skillspector.git'

# stdioトランスポートで起動(エージェントのMCP設定から呼び出す想定)
skillspector mcp

# HTTPトランスポートで起動
skillspector mcp --transport http --host 127.0.0.1 --port 8000

既存ツール・関連手段との違い

SkillSpectorは万能ツールではなく、既存のセキュリティ手段とは守備範囲が異なる。導入前に、何をカバーし何をカバーしないのかを把握しておくべきである。

手段何を見るかSkillSpectorとの違い
SkillSpectorAgent Skill(SKILL.md+同梱コード)のインストール前診断プロンプトインジェクション・MCPポイズニング等LLM特有の攻撃パターンに特化
汎用SAST(Semgrep等)一般的なソースコードの脆弱性パターンLLM/エージェント特有の攻撃(プロンプトインジェクション等)のルールは持たない
依存脆弱性スキャナ(OSV-Scanner・Dependabot等)依存パッケージの既知CVEコード自体の悪意ある記述やプロンプト層の汚染は検出しない。SkillSpectorはOSV.dev照会で一部この役割を内包
サンドボックス実行・権限制限実行時の実際の挙動(ファイルアクセス・通信先)SkillSpectorは静的解析中心でスキルを実行しない。実行時の未知の挙動までは捕捉できない

この比較から分かる限界も正直に押さえておきたい。SkillSpectorの主軸は静的解析であり、スキルのコードを実際に実行するわけではないため、実行時にしか現れない挙動(動的に組み立てられるコード、実行環境依存の分岐など)までは検出できない。また、LLMによる意味解析は検出精度を底上げするが、あくまで約87%の精度であり、巧妙に偽装された悪意あるスキルを完全に見抜けるとは限らない。SkillSpectorのスコアを唯一の判断材料にせず、サンドボックスでの実行制限や最小権限運用と組み合わせる多層防御が前提になる。

SkillSpectorは無料で使えますか。

はい。Apache 2.0ライセンスのオープンソースソフトウェアで、GitHubから無償で入手できます。

どのAgent Skillでもスキャンできますか。

Claude Code・Codex CLI・Gemini CLIなどが読み込むSKILL.md形式のAgent Skillが対象です。ローカルディレクトリ・単一ファイル・ZIP・Git URLのいずれの形式にも対応しています。

LLM解析をオフにしても意味がありますか。

意味があります。静的解析(AST走査・テイント追跡・YARAシグネチャ・正規表現パターン)だけでも危険なコード構造の多くを検出できます。機密性の高いスキルをスキャンする際は--no-llmでファイル内容を外部プロバイダへ送らずに済みます。

CIでどう使えばよいですか。

スコア50超で終了コード1を返す仕様を利用し、GitHub ActionsなどのCIステップとしてskillspector scanを実行し、失敗時にジョブを止める形でゲートを構築できます。SARIF出力にも対応しています。

スキャンだけでインストールしても安全と言えますか。

言い切れません。静的解析中心のためスキルを実行はせず、実行時にしか現れない挙動までは捕捉できません。またLLM解析の精度は約87%です。スコアを唯一の判断材料にせず、サンドボックス実行や最小権限運用と併用することが推奨されます。

依存パッケージの脆弱性もチェックしてくれますか。

はい。依存関係のCVEはOSV.dev(Open Source Vulnerabilities)にリアルタイムで照会します。APIキーは不要で、オフライン時は自動的にフォールバックします。

お気軽にご相談ください

お問い合わせ