security-scanner について
デプロイ前のセキュリティ評価を行う読み取り専用スキルです。静的コード検査、シークレット検出、依存関係の確認、コンプライアンスのヒューリスティック評価を組み合わせ、CWEとOWASPに対応付けて重大度別に修正案を示します。
主な機能
- 01静的コードのセキュリティパターン検査
- 02ソースコード内のシークレット検出
- 03依存関係ロックファイルの分析
- 04検出結果をCWEとOWASPに対応付け
- 05SOC2、GDPR、HIPAAのヒューリスティック評価
- 06セキュリティ検出レポートの生成
活用シーン
- 01デプロイ前のコードベース監査
- 02ソースファイルに含まれる認証情報の検出
- 03依存関係のバージョンとリスクの確認
- 04コンプライアンス管理項目の確認結果整理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ wyattowalsh/ agents --skill security-scannerインストール後、Claude Code で/security-scannerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
data/cwe-common.jsonowasp-top-10.jsonsecrets-patterns.jsonevals/compliance-mode.jsonevals.jsonexplicit-scan.jsonfull-scan.jsonimplicit-trigger.jsonnegative-control.jsonreferences/compliance-checklists.mdcwe-patterns.mddependency-audit.mdowasp-patterns.mdscope-boundary.mdsecrets-guide.mdtriage-protocol.mdscripts/check.pycompliance-scorer.pydependency-checker.pysarif-formatter.pysecrets-detector.pyscripts/asset_toolkit/__init__.py_shared.pycommon.pypackage.pyvalidate_evals.pyvalidate_hooks.pyvalidate_skill.pytemplates/dashboard.html詳細
セキュリティスキャナー
デプロイ前のプロアクティブなセキュリティ評価です。SAST によるパターンマッチング、シークレット検出、依存関係スキャン、OWASP/CWE へのマッピング、コンプライアンスのヒューリスティック評価を行います。
対象範囲: デプロイ前のセキュリティ監査のみです。コードレビュー(review を使用)、許可を得た実環境での攻撃テスト(署名済みの ROE を用いて pentest を使用)、静的監査のコンテキストを伴わないペネトレーションテスト、ランタイムのセキュリティ監視、サプライチェーンの詳細分析には対応しません。
標準用語
| 用語 | 定義 |
|---|---|
| finding | 重大度、CWE マッピング、信頼度、修正方法を含む個別のセキュリティ問題 |
| severity | CVSS に準拠したヒューリスティック評価による CRITICAL / HIGH / MEDIUM / LOW / INFO の分類 |
| confidence | 検出ごとのスコア(0.0~1.0)。>=0.7 は報告、0.3~0.7 は潜在的な問題としてフラグ付け、<0.3 は破棄 |
| CWE | 検出された問題を既知の弱点クラスに対応付ける Common Weakness Enumeration 識別子 |
| OWASP | Open Web Application Security Project Top 10 のカテゴリーマッピング |
| SAST | Static Application Security Testing — パターンベースのソースコード分析 |
| secret | ソース内で検出されたハードコード済みの認証情報、API キー、トークン、または秘密鍵 |
| lockfile | バージョンを固定した依存関係マニフェスト(package-lock.json、uv.lock など) |
| compliance | SOC2/GDPR/HIPAA の管理策に対する簡易的なヒューリスティック評価 |
| triage | 詳細なスキャンの前に、セキュリティ上の関連性に基づいてファイルをリスク分類すること |
| remediation | 該当する場合にコード例を含む、具体的な修正方法 |
| SARIF | CI 統合用の Static Analysis Results Interchange Format |
| false positive | パターンに一致して検出されたものの、実際の脆弱性ではないもの |
ディスパッチ
| $ARGUMENTS | モード | アクション |
|---|---|---|
| 空 | — | ディスパッチメニューと実行例を表示します。スキャンは開始しません |
scan [path] | scan | 指定したパスを対象にセキュリティスキャンを実行します(既定値:cwd) |
check <file/dir> | check | 指定したファイルを対象にセキュリティチェックを実行します |
deps [path] | deps | 依存関係の lockfile を分析します |
secrets [path] | secrets | シークレットのみを対象に正規表現スキャンを実行します |
compliance <standard> | compliance | SOC2/GDPR/HIPAA のヒューリスティックチェックリストを表示します |
report | report | 検出結果をダッシュボードで可視化します |
| 認識できない入力 | — | 明確化を求めます |
空の入力/ヘルプ一覧
$ARGUMENTS が空の場合は、上記のディスパッチ表に加えて、次の例を表示します。
/security-scanner scan/security-scanner check src/auth//security-scanner deps/security-scanner secrets/security-scanner compliance soc2/security-scanner report
フルスキャンは、ユーザーが scan などのモードを選択した後にのみ実行されることを明記してください。引数なしでの実行では、メニューのみを表示します。
モード:scan
大規模なコードベースでは、トリアージとサンプリングを行って、コードベース全体のセキュリティを評価します。
ステップ 1:トリアージ
findまたは Glob を使ってファイルを列挙し、ファイル一覧を作成します- ファイルをセキュリティ上の関連性に基づいて HIGH/MEDIUM/LOW にリスク分類します:
- HIGH:認証、暗号化、決済、ユーザー入力処理、API エンドポイント、シークレットを含む設定
- MEDIUM:データモデル、ミドルウェア、外部 I/O に関わるユーティリティ
- LOW:静的アセット、テスト、ドキュメント、純粋な計算処理
- ファイルが 100 個以上の場合はサンプリングします — HIGH はすべて、MEDIUM は 50%、LOW は 10%
- HIGH リスクのファイルの依存関係グラフを作成します
ステップ 2:SAST パターンスキャン
HIGH およびサンプリングした MEDIUM/LOW のファイルを読み込みます。references/owasp-patterns.md のパターンと照合します:
- インジェクションの脆弱性(SQL、コマンド、パストラバーサル、テンプレート、LDAP)
- 認証/セッションの弱点
- 機密データの露出(PII のログ記録、平文での保存)
- XXE、SSRF、デシリアライゼーション
- セキュリティの設定ミス
- XSS(反射型、格納型、DOM 型)
- 安全でない直接オブジェクト参照
- アクセス制御の欠如
- CSRF の脆弱性
- 既知の脆弱性を持つコンポーネントの使用
ステップ 3:シークレットスキャン
実行:uv run python scripts/secrets-detector.py <path>
JSON 出力を解析します。検出結果を .gitignore の適用範囲と照合します。
ステップ 4:依存関係のチェック
ロックファイルが存在する場合は、次を実行します:uv run python scripts/dependency-checker.py <path>
JSON 出力を解析します。古くなった依存関係や保守されていない依存関係にフラグを立てます。
ステップ 5:CWE/OWASP へのマッピング
references/cwe-patterns.md を使用して、各検出結果を CWE ID と OWASP Top 10 のカテゴリーにマッピングします。
重大度(CRITICAL/HIGH/MEDIUM/LOW/INFO)と信頼度(0.0-1.0)を割り当てます。
ステップ 6:修正
信頼度が 0.7 以上の検出結果ごとに、以下を提示します:
- CWE の参照リンク
- 具体的な修正方法
- 該当する場合はコード例
ステップ 7:レポート
検出結果を重大度ごとにまとめて提示します。以下を含めます:
- 重大度ごとの検出件数を含むエグゼクティブサマリー
- CWE、OWASP、証拠、修正方法を含む詳細な検出結果
- 依存関係の健全性サマリー(ロックファイルをスキャンした場合)
- シークレットのサマリー(種類ごとの件数。値は公開しない)
モード:check
特定のファイルまたはディレクトリを対象に、セキュリティチェックを実施します。
- 指定されたファイルを読み取ります
- SAST パターンマッチングをすべて適用します(トリアージ/サンプリングは行わず、すべてをスキャンします)
- パスに対してシークレット検出を実行します
- 検出結果を CWE/OWASP にマッピングします
- 修正方法とともに検出結果を提示します
モード:deps
依存関係のロックファイルを分析します。
- ロックファイルを検出します:
package-lock.json、yarn.lock、pnpm-lock.yaml、requirements.txt、uv.lock、Cargo.lock、go.sum、Gemfile.lock、composer.lock - 次を実行します:
uv run python scripts/dependency-checker.py <path> - 出力を解析します:依存関係名、バージョン、エコシステム
- 古くなったパッケージ、既知の CVE パターンに該当するパッケージ、不自然なバージョン固定にフラグを立てます
- 依存関係の健全性レポートを提示します
モード:secrets
正規表現パターンを使用して、シークレットのみをスキャンします。
- 次を実行します:
uv run python scripts/secrets-detector.py <path> - JSON 形式の検出結果を解析します
.gitignoreと照合し、追跡対象ファイル内のシークレットに CRITICAL のフラグを立てます- 以前にコミットされたシークレットがないか Git 履歴を確認します:
git log --diff-filter=D -p -- <file> - シークレットの種類ごとに検出結果をまとめて提示します。実際の値は決して公開しません
モード:compliance
軽量なコンプライアンスのヒューリスティック評価を行います。
<standard>がsoc2、gdpr、hipaaのいずれかであることを検証します- 次を実行します:
uv run python scripts/compliance-scorer.py <path> --standard <standard> references/compliance-checklists.mdから参照チェックリストを読み取ります- 証拠とともに、各管理策を PASS/FAIL/PARTIAL として評価します
- 全体のパーセンテージと不合格の管理策を含むコンプライアンス評価表を提示します
モード:report
ビジュアルなセキュリティダッシュボードを生成します。
- 現在のセッションのすべての検出結果を収集します(結果がない場合はスキャンを再実行します)
- ダッシュボードのスキーマに一致する JSON 形式で検出結果を整形します
- 要求された場合は SARIF に変換します:
uv run python scripts/sarif-formatter.py - JSON を
templates/dashboard.htmlに挿入します - 一時ファイルにコピーし、ブラウザーで開きます
スケーリング戦略
| 範囲 | 戦略 |
|---|---|
| 1-10 ファイル | トリアージなしで直接スキャン |
| 11-100 ファイル | トリアージ+優先順位を付けたスキャン |
| 100-500 ファイル | トリアージ+サンプリング(HIGH はすべて、MEDIUM は 50%、LOW は 10%) |
| 500+ ファイル | トリアージ+サンプリング+リスク階層ごとの並列サブエージェント |
参照ファイル
一度に読み込む参照ファイルは1つだけにしてください。すべての参照ファイルをコンテキストに事前読み込みしないでください。
| ファイル | 内容 | 読み込むタイミング |
|---|---|---|
| references/owasp-patterns.md | コードパターンと検出ヒューリスティックを含むOWASP Top 10 | SASTスキャン中(Step 2) |
| references/cwe-patterns.md | 検出パターンと修正方法を含むTop 50のCWE | CWEマッピング中(Step 5) |
| references/secrets-guide.md | シークレットのパターン、誤検知のヒント、トリアージのガイダンス | シークレットスキャン中 |
| references/dependency-audit.md | 依存関係監査プロトコルとCVE検索ワークフロー | depsモード中 |
| references/compliance-checklists.md | スコアリング付きSOC2/GDPR/HIPAA管理策チェックリスト | コンプライアンスモード中 |
| references/triage-protocol.md | セキュリティファイルのリスク分類方法 | トリアージ中(Step 1) |
| references/scope-boundary.md | レビュー、ペンテスト、ランタイムモニタリングとの境界 | スコープが不明確な場合 |
| スクリプト | 実行するタイミング |
|---|---|
| scripts/secrets-detector.py | シークレットスキャン — 正規表現ベースの検出 |
| scripts/dependency-checker.py | 依存関係分析 — ロックファイルの解析 |
| scripts/sarif-formatter.py | SARIF変換 — CI統合用の出力 |
| scripts/compliance-scorer.py | コンプライアンススコアリング — ヒューリスティックなチェックリスト |
| テンプレート | レンダリングするタイミング |
|---|---|
| templates/dashboard.html | スキャン後 — 検出結果のJSONをdataタグに挿入 |
重要なルール
- 実際のシークレット値を出力に含めないでください。種類、ファイル、行番号のみを表示してください
- すべての検出結果を、少なくとも1つのCWE IDに対応付けてください
- 信頼度が0.3未満の場合は破棄し、0.3~0.7の場合は潜在的な問題としてフラグを立て、0.7以上の場合は報告してください
- 報告前にsecrets-detector.pyを実行してください。正規表現パターンはLLMスキャンで見逃されるものを検出します
- 不可能な条件を必要とする実体のない脆弱性を報告しないでください
- ファイル数が100以上の場合は、スキャン前に必ずトリアージしてください。コードベース全体を力任せにスキャンしないでください
- 依存関係に関する検出結果には、バージョンの根拠が必要です。実際のバージョンを確認せずに問題を指摘しないでください
- コンプライアンスモードはヒューリスティックのみです。出力でこの点を明示し、認証を取得していると決して主張しないでください
- 修正を提案する前に検出結果を提示してください。必ず承認ゲートを設けてください
- .gitignoreと照合してください。未追跡ファイル内のシークレットはINFO、追跡対象ファイル内のシークレットはCRITICALです
- 一度に読み込む参照ファイルは1つだけにしてください。すべての参照ファイルをコンテキストに事前読み込みしないでください
- このスキルはデプロイ前の監査専用です。コードレビューの依頼はレビューへ誘導し、ペンテストの依頼は拒否してください
- SARIF出力はSARIF v2.1スキーマに準拠させてください。sarif-formatter.pyで検証してください
- ソースファイルを変更しないでください。このスキルで行うのは読み取り専用の分析です