SkillSpector AI エージェント スキル用の NVIDIA の Apache-2.0 セキュリティ スキャナーです。マークダウン、スクリプト、依存関係、ツール定義、アクティブ化ルールが含まれる可能性がある指示パッケージです。ローカル ディレクトリ、個別のファイル、zip アーカイブ、Git リポジトリ、または URL を受け入れ、リスク スコア 0 ~ 100 のターミナル、JSON、マークダウン、または SARIF の結果を生成します。
その値は脅威モデルです。スキルは単なる文書化ではありません。エージェントがその指示に従うと、その指示によりファイル アクセス、シェルの実行、資格情報の使用、ネットワーク送信、または永続的な構成変更が発生する可能性があります。 SkillSpector は、従来のソフトウェア リスクと、プロンプト インジェクション、過剰なエージェンシー、メモリ ポイズニング、トリガーの乱用、MCP ツール記述ポイズニングなどのエージェント固有の問題の両方をチェックします。クリーンなレポートは、1 つのプリインストール分析レイヤーからの証拠であり、実行時の動作が安全であることを保証するものではありません。

SkillSpector が信頼パイプラインに適合する場所
ソース ID + コミット ピン
|
v
隔離されたワークスペースで解凍する
|
.-----+----------。
vv
静的ルールの依存関係 / OSV
AST + 汚染シグネチャ + メタデータ
「-----+----------」
v
オプションの LLM セマンティック レビュー
|
人間の性質
受け入れる / 修正する / 理由を付けて抑制する / 拒否する
|
サンドボックス + 最小権限 + ランタイム監視
この順序が重要です。今日、固定されていない URL をスキャンしても、明日のダウンロードが同一であることは証明されません。認証情報を分離せずに敵対的な命令に対して LLM を実行すると、新たな危険が生じます。ブロック ポリシーを使用せずに SARIF ファイルをアップロードすると、可視性は確保されますが、制御は行われません。スキャナを再現可能な承認プロセスの 1 段階として扱います。
2 段階アナライザーの機能
| ステージ | 仕組み | 強さ | 予想される弱点 |
|---|---|---|---|
| 静的パターン | スキルファイル間での正規表現とルールのマッチング | 高速、決定的、説明可能 | 良性の例は一致する可能性があります。斬新な表現は回避できる |
| 行動AST | Python 実行プリミティブと危険なコール チェーンを検出します | キーワード以外のコードの動作を検索します | コードは実行しません。言語と間接的な範囲は有限です |
| 汚染の追跡 | 入力/シークレット/ファイルから実行またはネットワーク シンクへのフローを検索します。 | ソースとシンクを意味のあるパスに接続します | 動的ディスパッチと複雑なフレームワークは静的フローを打ち負かすことができます |
| OSV ルックアップ | 宣言された依存関係の脆弱性について OSV.dev をクエリします。 | オンライン時の現在の脆弱性インテリジェンス | オフライン モードでは、小規模なフォールバックが使用されます。未宣言/ベンダーのコードは見逃される可能性があります |
| YARA の署名 | 既知のマルウェア、Webシェル、マイナー、エクスプロイトのパターンと一致します | 既知の家族に役立つ | 未知のペイロード、パックされたペイロード、または変更されたペイロードは回避される可能性があります |
| オプションの LLM レビュー | 意図とコンテキストを評価し、結果を説明する | 明らかな静的誤検知を減らすことができます | 確率的でプロバイダーに依存し、敵対的なコンテンツにさらされる |
このプロジェクトでは、静的分析を中程度の精度で再現率が高いと説明し、オプションのセマンティック レビューにより精度が向上すると述べています。見出しの精度数値を独自のコーパスに再現せずにポリシーにコピーしないでください。セキュリティ チームは、1 つの集計値だけではなく、カテゴリごとの誤検知を考慮します。
運用上の 16 のリスク カテゴリ
| リスクグループ | 取り上げられた例 | 査読者が検証すべきこと |
|---|---|---|
| 命令制御 | プロンプトインジェクション、隠蔽ディレクティブ、システムプロンプトリーク | 指示は可視であり、範囲が定められており、ホスト ポリシーに従属していますか? |
| データアクセス | 環境の収集、ファイルシステムの列挙、コンテキストの抽出 | どのデータ クラスがどのドメインに流れることができるのでしょうか? |
| 権威 | 権限昇格、過剰な代理権、ツールの悪用 | スキルは、元に戻せる最小限の権限のみを要求しますか? |
| 持続性 | メモリポイズニング、自己変更、スタートアップまたは cron 永続化 | スキルは今後のセッションや自身の適用を変更できますか? |
| ソフトウェアのサプライチェーン | 固定解除されたパッケージ、リモート スクリプト、CVE、タイポスクワッティング、難読化 | ハッシュ、コミット、依存関係の来歴は再現可能ですか? |
| MCP 境界 | ワイルドカード権限、宣言されていない機能、ツールポイズニング | 宣言されたメタデータはコードとランタイム トラフィックに一致しますか? |
| コードの動作 | exec/eval、サブプロセス、動的インポート、汚染された実行 | 危険な行動は必須であり、制限されており、安全にパラメータ化されていますか? |
| 出力とトリガー | サニタイズされていない出力、広範囲のアクティベーション、シャドウ コマンド | 通常のテキストが予期せずアクティブになったり、信頼境界を越えたりする可能性がありますか? |
SkillSpector には現在、これら 16 のカテゴリにわたる 64 のパターンが文書化されています。この数値は、それ自体がセキュリティ スコアとしてではなく、バージョン管理の対象範囲に役立ちます。既知の正規表現の 10 種類の変種が 1 つの新しい攻撃チェーンから保護されるとは限りませんが、1 つの高品質な汚染ルールで重大な漏洩を防ぐことができる可能性があります。
リスクスコアを理解する
文書化されたモデルでは、重大な所見に 50 ポイント、高の場合 25、中程度の場合 10、低レベルの場合 5 が加算され、実行可能スクリプトが存在する場合は 1.3 倍の乗数が適用され、結果の上限が 100 になります。公開されているバンドは、0 ~ 20 低、21 ~ 50 中、51 ~ 80 高、および 81 ~ 100 重大とラベル付けされています。
| スコア/バンド | デフォルトの推奨事項 | 意味がないこと |
|---|---|---|
| 0~20 / 低 | 手動レビューとサンドボックステストを継続する | 「安全」ではありません。盲点には観察されていない動作が含まれている可能性があります |
| 21–50 / 中 | 所有者の処分と是正を要求する | 自動的に悪意があるわけではありません。正当なネットワークまたはシェルの使用によりスコアが発生する可能性があります |
| 51–80 / 高 | セキュリティが例外を許可しない限り、インストールをブロックする | スコアだけでは意図は確立されない |
| 81–100 / クリティカル | 情報源/出所を拒否し調査する | 複数の所見が 1 つの根本原因を説明している可能性があります。トリアージ中に重複を排除する |
スコアは異質な証拠を圧縮します。ルール ID、ファイルの場所、スニペット、信頼性、アナライザーのバージョン、ソース コミットを保持します。スコアが 50 の 2 つのスキルには、根本的に異なるリスクが存在する可能性があります。1 つのクリティカルなコード実行パスと 10 の重大度の低い衛生に関する調査結果です。
静的のみのスキャンと LLM 支援スキャンの比較
| モード | いつ使用しますか | データ境界 | 政策への影響 |
|---|---|---|---|
--no-llm | 高速 CI、信頼できない入力、エアギャップ レビューまたは決定論的なベースライン | セマンティック ペイロードがモデル プロバイダーに送信されない | より多くの誤検知と意図の見逃しが予想される |
| マネージド OpenAI/Anthropic/NVIDIA エンドポイント | 状況に応じたトリアージは外部処理する価値があります | スキルの内容が環境から離れる可能性がある | プロバイダーの契約条件、保持期間、リージョン、資格情報を確認する |
| ローカルの OpenAI 互換エンドポイント | 繊細なスキルまたは再現可能な内部評価 | ネットワークが制御されている場合はローカルのままにすることができます | モデルの品質と即時注入の堅牢性はあなたの責任となります |
スキャナーのセマンティック モデルに必要以上の権限を与えないでください。モデルはテキストを分析する必要があり、プロダクション シークレットやインストール許可を所有してはなりません。セマンティックな性質はバージョン間で異なる可能性があるため、スキルのコンテンツを敵対的な入力として扱い、正確なプロバイダー/モデルをログに記録します。
既知の盲点
NVIDIA は重要な制限を明示的にリストしています。英語以外の攻撃は見逃される可能性があります。画像に隠されたテキストは分析されません。コンパイル、暗号化、またはバイナリ コードは静的な可視性の範囲外にあります。実行時の動作は実行されません。ネットワークが利用できない場合、OSV のカバレッジは減少します。静的分析は、生成されたコード、リフレクション、第 2 段階のダウンロード、環境条件による動作、およびリモート サーバーの応答が変化した後にのみ現れる不正行為にも対処する可能性があります。
| 死角 | 補償制御 |
|---|---|
| 画像またはドキュメントの指示 | OCR/メタデータを抽出し、別のサンドボックスでメディアを確認する |
| バイナリまたは暗号化されたアーティファクト | 不透明なペイロードを拒否するか、再現可能なソースとマルウェアのサンドボックス化を必要とする |
| 実行時のみの動作 | デフォルトで拒否されたネットワーク/ファイルシステムを備えたインストルメント化されたコンテナで実行する |
| 英語以外のプロンプトまたは難読化されたプロンプト | 言語を意識したレビュー、Unicode 正規化、敵対的テスト ケースを使用する |
| リモート依存関係の変更 | コミット/ハッシュの固定、依存関係のミラーリング、署名/SBOM の検証 |
| スキャナ回避または欠陥 | 多層防御、独立したレビュー、スキャナー回帰テストを使用する |
チームが強制できる CI アドミッション ポリシー
- 不変入力を解決します。 スキャンする前に、リポジトリ、コミット SHA、アーカイブ ハッシュ、作成者、ライセンスを記録します。
- 実行せずに解凍します。 すべてのファイルのインベントリを作成する際は、フック、テンプレート、およびパッケージのインストールを無効にします。
- 最初に静的のみを実行します。 JSON と SARIF を、SkillSpector バージョン、および OSV に到達可能かどうかとともに保存します。
- 明示的なゲートを適用します。 抑制されていないクリティカル/高レベルの結果、資格情報からネットワークへの汚染、隠された命令、または不透明な実行可能ファイルをブロックします。
- セマンティック レビューを個別に実行します。 承認されたコンテンツのみを隔離されたプロバイダーに送信し、モデルにスキルのインストールを許可しないでください。
- 人間的な気質が必要です。 すべての抑制には、所有者、根拠、範囲、有効期限が必要です。
- ランタイム境界をテストします。 シークレットなし、読み取り専用フィクスチャ、ドメイン許可リスト、および使い捨てアカウントから始めます。
- アップデートを再スキャンします。 ソースの変更、依存関係ロックの変更、ルールパックのリリース、および新しく公開された CVE をトリガーします。
| 見つける | 推奨ゲート | 例外の証拠 |
|---|---|---|
| クリティカル/高汚染または実行チェーン | ハードブロック | セキュリティレビューとコード修復。永久的な抑圧を避ける |
| 外部ネットワークの宛先 | 許可リストにない限りブロックする | ビジネス目的、データ分類、ドメインとペイロードの証明 |
| 固定されていない依存関係 | ブロック解除 | ロックファイル/ハッシュおよび制御された更新プロセス |
| 広範なトリガーまたはワイルドカード権限 | 絞り込みが必要 | 実証済みのニーズと実行時の承認制御 |
| 深刻度の低い衛生上の問題 | 期限付きで警告する | 所有者と修復チケット |
検出品質を評価する方法
組織が導入しているスキルに似たラベル付きコーパスを作成します。サブプロセスまたはネットワーク API、関連するすべてのルール ファミリに対して意図的に脆弱なフィクスチャ、多言語命令、エンコードされたテキスト、名前変更されたツール、および連鎖動作を正当に使用するクリーンなスキルが含まれます。コーパスを分割して、チューニング サンプルが唯一のテスト セットにならないようにします。
| メトリック | 質問に回答しました | なぜそれが重要なのか |
|---|---|---|
| 重大度/カテゴリ別のリコール | 既知の危険なケースは何件見つかりましたか? | 全体的なレートが高いと、資格情報の漏洩のカバー範囲がゼロになる可能性があります。 |
| 精度 | 対処可能なアラートはいくつありましたか? | 低精度ではゲートを回避するように開発者をトレーニングします |
| 処分までの時間 | 人間のトリアージにはどのくらいの時間がかかりますか? | 実際の運用コストを測定する |
| インクリメンタルスキャンタイム | 変更のたびにチェックを実行できますか? | 遅いゲートは頻度の低い監査に移行します |
| 意味の安定性 | 繰り返しの実行/モデルバージョンの実行は一致しますか? | 非決定的な政策結果を明らかにする |
| 脱出率 | 合格後の実行時にどのような危険な動作が現れましたか? | スキャナーだけでなく、入場システム全体をテストします |
SARIF とレポート
SARIF 出力は GitHub コード スキャンにアップロードできるため、結果はソースの場所に表示され、リポジトリの通常のセキュリティ ワークフローに参加できます。 JSON は、ポリシー エンジンと長期的な指標に適しています。 Markdown は人間によるパケットのレビューに役立ちます。ローカルではターミナル出力が便利です。固定バージョンでの終了コードの動作を確認し、レポートの作成がビルドに失敗すると仮定するのではなく、ゲートを明示的に実装します。
レポート自体に、機密のスニペット、内部パス、不審な指示が含まれる場合があります。アーティファクトの保持とアクセスを制限します。トークンまたはエクスプロイト ペイロードを含む完全な検出結果をパブリック プル リクエストで公開しないでください。
代替および補完的なコントロール
| オプション | 最適な使用方法 | SkillSpector との関係 |
|---|---|---|
| Cisco AI Defense スキルスキャナー | エージェントのスキルに重点を置いた別のマルチエンジン スキャナー | カバレッジと誤検知を比較します。独立したエンジンにより検出を多様化できる |
| Semgrep/CodeQL | 言語固有の詳細な静的分析とカスタム組織ルール | エージェントの指示と MCP 固有のチェックを補完します |
| OSV-スキャナー/依存ボット | 依存関係の脆弱性と更新ワークフロー | 1 つの埋め込みルックアップよりも広範な依存関係操作 |
| YARA/マルウェア対策サンドボックス | 既知のマルウェアと動的な動作 | Markdown 指向の分析以外のペイロードに役立ちます |
| 手動許可リスト + 署名付きカタログ | 承認されたスキルがほとんどない高度に管理された環境 | サプライチェーンの変動性を軽減します。署名された各リリースをまだスキャンしています |
| ランタイムサンドボックス/ポリシーエンジン | ファイル、ネットワーク、シークレット、承認の境界を強制する | インストール前のスキャンではすべてを観察できないため、必須の補償が必要 |
よくある質問
スコアが低いということは、そのスキルが安全であることを意味しますか?
いいえ。ピン留めされたスキャナーのバージョンでは、多くの認識された結果が蓄積されなかったことを意味します。盲点、実行時の動作、サプライチェーンの代替が依然として発生する可能性があります。
SkillSpector はスキルを実行しますか?
いいえ。文書化された制限は、動的実行ではなく静的分析です。実行時テストには、別のインストルメント化されたサンドボックスを使用します。
リモート Git リポジトリをスキャンできますか?
はい、URL、zip アーカイブ、ディレクトリ、および個々のファイルも含まれます。再現性を高めるために、変更可能なブランチ URL ではなく、不変のコミットまたはハッシュをスキャンします。
LLM 分析は必要ですか?
いいえ。 --no-llm 静的のみで実行されます。セマンティック分析はオプションであり、マネージド プロバイダーまたはローカルの OpenAI 互換エンドポイントを使用できます。
OSV ネットワーク アクセスがないとどうなりますか?
スキャナーは小さな組み込みリストにフォールバックするため、依存関係の脆弱性の範囲は最新ではなく、包括的ではありません。その劣化状態をレポートに記録します。
最終的な決定権は誰が持つべきでしょうか?
指定されたセキュリティまたはプラットフォームのレビュー担当者。スキルの機能所有者からの意見が反映されます。スキャナーは結果を提供します。インストール権限を付与すべきではありません。
出典と検証
- 公式 SkillSpector リポジトリと README
- 公式セキュリティポリシー
- 検証済みのスキルと SkillSpector に関する NVIDIA 技術記事
- NVIDIA 検証済みエージェント スキル カタログ
- OSV API ドキュメント
- GitHub SARIF ドキュメントのアップロード
- LLM アプリケーションのリスクに関する OWASP ガイダンス
- MITRE ATLAS 敵対的脅威ナレッジ ベース
- Cisco AI Defense スキルスキャナーの比較
最終レビュー日は 2026 年 7 月 26 日です。パターン数、プロバイダー、デフォルト モデル、および CLI の動作は変更される可能性があります。ゲートを採用する前に、スキャナーのバージョンを固定し、現在のリポジトリを確認します。

