
skill-scanner v2.0.13
エージェントスキル向けセキュリティスキャナー
Skill Scanner
AI Agent Skills 向けのベストエフォート型セキュリティスキャナで、プロンプトインジェクション、データ流出、悪意のあるコードパターンを検出します。パターンベース検出(YAML + YARA-X)、AST およびデータフロー解析、オプションの LLM-as-a-judge、そして型付き検出器ファクトに対する境界付き CEL 決定レイヤーを組み合わせています。
重要: このスキャナはベストエフォート型の検出を提供するものであり、網羅的または完全なカバレッジを保証するものではありません。検出結果が何も返らないスキャンは、そのスキルに脅威が一切ないことを保証するものではありません。以下のスコープと制限を参照してください。
Agent Skills 仕様に準拠した OpenAI Codex Skills および Cursor Agent Skills 形式をサポートします。--lenient を指定すると、Claude Code の .claude/commands/*.md やフラットな markdown スキルリポジトリなど、非標準形式もスキャンします。
ハイライト
- マルチエンジン検出 - 静的解析、振る舞いデータフロー、LLM セマンティック解析、クラウドベーススキャンを組み合わせ、多層的でベストエフォートなカバレッジを実現
- 型付き CEL 決定 - コアスキャナは公式の
cel-gov0.32.0 ランタイムを使用し、決定論的検出の後、オプションの LLM 解析の前に、境界付きファクトを相関分析 - 検出結果レビュー - オプションの Meta-analyzer が検出結果を相関分析・優先順位付けし、フィルタリングも可能。ペアリングされた精度検証は保留中
- CI/CD 対応 - GitHub Code Scanning 向け SARIF 出力、再利用可能な GitHub Actions ワークフロー、ビルド失敗用の終了コード
- Pre-commit フック - 標準 pre-commit フレームワーク統合により、コミット前にスキルをスキャン
- 拡張可能 - カスタムアナライザー用のプラグインアーキテクチャ
**Cisco AI Discord に参加**して、議論したり、フィードバックを共有したり、チームとつながりましょう。
スコープと制限
Skill Scanner は検出ツールです。既知および推定されるリスクパターンを特定しますが、セキュリティを証明するものではありません。
主な制限:
- 検出結果なし ≠ リスクなし。 スキャンが「No findings」を返すのは、既知の脅威パターンが検出されなかったことを示すだけです。スキルが安全、無害、または脆弱性がないことを保証するものではありません。
- カバレッジは本質的に不完全です。 スキャナはシグネチャベース検出、LLM ベースのセマンティック解析、振る舞いデータフロー解析、オプションのクラウドサービス、設定可能なルールパックを組み合わせています。このアプローチはカバレッジを向上させますが、自動ツールがすべての手法、特に新規またはゼロデイ攻撃を検出できるわけではありません。
- 偽陽性と偽陰性が発生する可能性があります。 コンセンサスモードとメタ解析は検出結果のレビューに役立ちますが、すべての誤分類を排除できる設定はありません。リスク許容度に応じてスキャンポリシーを調整してください。
- 人間によるレビューは依然として不可欠です。 自動スキャンは多層防御戦略の一要素にすぎません。高リスクまたは本番環境へのデプロイでは、スキャナの結果を手動コードレビューや脅威モデリングと組み合わせるべきです。
現在のモダナイゼーションのエビデンス
最終的なコア + CEL 開発ベンチマークには、5,256 件の悪意あるパッケージと 1,338 件の無害な MaliciousSkillBench パッケージが含まれています。origin/main と比較して、現在のスキャナは F1 を 32.92% から 47.73% に、再現率を 19.88% から 31.43% に向上させ、同時に無害な偽陽性率を 3.59% から 1.05% に低減しました。適合率は 99.16% です。5 回の CEL-shadow 実行は正確かつ決定論的でした。CEL は 154 件の候補を評価し、抑制を提案することもフォールバックすることもありませんでした。
ロックされたソース非重複分割はより弱い結果です: TP=65、FP=42、TN=503、FN=774 で、適合率 60.75%、再現率 7.75%、F1 13.74%、FPR 7.71% です。これは origin/main(7.40%)より F1 を改善しますが、FPR は悪化(3.67%)するため、昇格ゲートを通過しません。したがって、バンドルされているすべての CEL ルールは shadow のままです。この変更は CEL 抑制を一切昇格させません。
互換性および補足チェックでは、111 件の公式 Codex、Claude Code、Cursor スキル(30 件の MEDIUM+ および 8 件の HIGH/CRITICAL パッケージ)で、CEL-OFF/CEL-SHADOW の検出結果が同一であり、5 回の実行が安定していました。NotInject ハードネガティブセットでは 0/339 のアクション可能な一致でした。HarmfulSkillBench では 7/200 がアクション可能、6/200 が HIGH+ パッケージで、1 件のサンプルが隔離されました。一方、OpenSkillRisk では 76/263 がアクション可能なパッケージで、2 件のホストが隔離されました。後者 2 つはポジティブのみの再現率診断であり、適合率や FPR を測定できません。オプションの ATR 結果はこのリリースのスコープ外です。方法論、来歴、信頼区間、制限については検出評価とロールアウトを参照してください。
ドキュメント
| ガイド | 説明 |
|---|---|
| クイックスタート | 5 分で始める |
| 推奨設定 | どの作業に何を実行すべきか、その理由、設定方法 |
| アーキテクチャ | システム設計とコンポーネント |
| CEL 決定レイヤー | 型付きファクト、安全境界、ロールアウトモード、テレメトリ |
| 脅威タクソノミー | 例を含む完全な AITech 脅威タクソノミー |
| LLM アナライザー | LLM の設定と使用方法 |
| System One アナライザー | オプションの助言的スクリーニング層と、それがゲートになれない理由 |
| Meta-Analyzer | 偽陽性フィルタリングと優先順位付け |
| 振る舞いアナライザー | データフロー解析の詳細 |
| スキャンポリシー | カスタムポリシー、プリセット、チューニングガイド |
| ポリシークイックリファレンス | ポリシーセクションと設定項目のコンパクトなリファレンス |
| 測定結果 | 公開されたすべての数値と、そのコーパス、母集団、モデル |
| ルール作成 | シグネチャ、YARA、Python ルールの追加方法 |
| GitHub Actions | CI/CD 統合用の再利用可能なワークフロー |
| API リファレンス | REST API ドキュメント |
| 開発ガイド | コントリビューションと開発環境のセットアップ |
インストール
このチェックアウトおよびこれらの変更を含むリリースの前提条件: CPython 3.11–3.14 および uv(推奨)または pip
このブランチの CEL 変更を含むリリースでは、必要なヘルパーが wheel に含まれます。別途 CEL 用の extra はありません。そのリリースは CPython 3.11–3.14 用に設定されていますが、ソースインストールではヘルパーをビルドするために Go 1.27.1+ が追加で必要です。公開されるまでの間、現在 PyPI で提供されているパッケージは異なる互換性契約を持っている可能性があります。詳細はインストールと設定を参照してください。```bash
Using uv (recommended)
uv pip install cisco-ai-skill-scanner
Using pip
pip install cisco-ai-skill-scanner
<details>
<summary><strong>クラウドプロバイダー拡張機能</strong></summary>```bash
# AWS Bedrock support
pip install cisco-ai-skill-scanner[bedrock]
# Google AI Studio / Gemini support
pip install cisco-ai-skill-scanner[google]
# Google Vertex AI support
pip install cisco-ai-skill-scanner[vertex]
# Azure OpenAI support
pip install cisco-ai-skill-scanner[azure]
# All cloud providers
pip install cisco-ai-skill-scanner[all]
クイックスタート
環境セットアップ(任意)```bash
For LLM analyzer and Meta-analyzer
export SKILL_SCANNER_LLM_API_KEY="your_api_key" export SKILL_SCANNER_LLM_MODEL="claude-3-5-sonnet-20241022"
Optional: disabled, minimal, low, medium, high, xhigh, or max
export SKILL_SCANNER_LLM_REASONING_EFFORT="low"