code-vuln-audit について
依存関係、漏えいしたシークレット、OWASP 関連のコードパターンを検査する Python 製コマンドラインセキュリティスキャナーです。コードベースを監査する開発者向けで、深刻度を絞ったテキストまたは JSON の結果を出力できます。
主な機能
- 01npm と Python の依存関係を監査
- 02パターン照合とエントロピーでシークレット検出
- 03OWASP 関連のコードパターンを検出
- 04スキャンモジュールと深刻度のしきい値を選択
- 05テキストまたは JSON レポートを出力
活用シーン
- 01リリース前に依存関係を確認
- 02コードベースにコミットされた認証情報を検出
- 03インジェクションや安全でないコードパターンを確認
- 04機械可読なセキュリティ検出結果を生成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ zebbern/ claude-code-guide --skill code-vuln-auditインストール後、Claude Code で/code-vuln-auditを入力して読み込まれたか確認します。
同梱ファイルLICENSEscripts/security_scan.py
詳細
code-vuln-audit
3 つのコアスキャン機能を備えたコードセキュリティスキャンツールです。
- 依存関係の脆弱性スキャン — npm / pip の依存関係に含まれる既知の脆弱性を自動検出します
- シークレット漏えい検出 — 正規表現マッチングとシャノンエントロピー分析により、ハードコードされたシークレット、トークン、パスワードを検出します
- OWASP パターン検出 — SQL インジェクション、XSS、コマンドインジェクション、安全でないデシリアライズなど、よくあるセキュリティ上のアンチパターンを特定します
クイックスタート
# Scan the current directory (all checks)
python3 scripts/security_scan.py .
# Scan dependencies only
python3 scripts/security_scan.py --mode deps .
# Detect secret leaks only
python3 scripts/security_scan.py --mode secrets /path/to/project
# Detect OWASP security patterns only
python3 scripts/security_scan.py --mode owasp .
# Output report in JSON format
python3 scripts/security_scan.py --format json --output report.json .
# Only show findings at high severity and above
python3 scripts/security_scan.py --severity high .
スキャンモジュールの詳細
1. 依存関係の脆弱性スキャン(deps)
プロジェクトの種類を自動検出し、適切なツールを実行します。
| プロジェクトの種類 | 検出ファイル | 使用するツール |
|---|---|---|
| Node.js | package.json + package-lock.json | npm audit |
| Python | requirements.txt / pyproject.toml / Pipfile | pip-audit |
該当する監査ツールがインストールされていない場合は、エラーではなく役立つメッセージを表示します。
2. シークレット漏えい検出(secrets)
次の 2 つの方法で検出します。
正規表現マッチング:よくあるシークレットの形式をカバーします
| シークレットの種類 | パターンの例 |
|---|---|
| AWS アクセスキー | AKIA で始まる 20 文字の文字列 |
| GitHub トークン | ghp_ または github_pat_ で始まる |
| Slack トークン | xoxb- または xoxp- で始まる |
| Stripe キー | sk_live_ または pk_live_ で始まる |
| 秘密鍵ファイル | -----BEGIN PRIVATE KEY----- |
| 汎用 API キー | api_key = "..." のような形式 |
| URL 内の認証情報 | https://user:pass@host |
| JWT トークン | eyJ... 形式 |
シャノンエントロピー分析:コード内の文字列定数の情報エントロピーを計算し(しきい値 > 4.5、長さ >= 20)、標準形式以外のシークレットを検出します。
3. OWASP パターン検出(owasp)
OWASP Top 10 に含まれる、静的解析で検出可能なセキュリティパターンをカバーします。
| OWASP カテゴリ | 検出パターン |
|---|---|
| A02: 暗号化の失敗 | 弱いハッシュ(MD5/SHA1)、弱い暗号(DES/RC4) |
| A03: インジェクション | SQL インジェクション、コマンドインジェクション(os.system / subprocess shell / eval / exec)、XSS(innerHTML / document.write / dangerouslySetInnerHTML / v-html) |
| A04: 安全でない設計 | パストラバーサル |
| A05: セキュリティ設定の誤り | デバッグモードの有効化、CORS のワイルドカード、0.0.0.0 へのバインド |
| A08: 整合性の失敗 | 安全でないデシリアライズ(pickle / yaml.load / marshal / unserialize) |
| A10: SSRF | HTTP リクエストへのユーザー入力の直接受け渡し |
対応言語:Python、JavaScript/TypeScript、Java、PHP、Ruby、Go など。
パラメーター
| パラメーター | 説明 | デフォルト |
|---|---|---|
TARGET | スキャンするディレクトリ | 現在のディレクトリ |
--mode MODE | スキャンモード:all、deps、secrets、owasp | all |
--format FORMAT | 出力形式:text、json | text |
--output FILE | 出力ファイルのパス | stdout |
--severity LEVEL | 報告する最低レベル:low、medium、high、critical | low |
--exclude-dir DIR | 除外する追加ディレクトリ(繰り返し指定可能) | - |
--max-file-kb SIZE | スキャンするファイルの最大サイズ(KB) | 512 |
-h, --help | ヘルプを表示 | - |
出力形式
テキスト出力(デフォルト)
=== Security Scan Report ===
Target: /path/to/project
Modules: deps, secrets, owasp
[CRITICAL] AWS Access Key ID
File: src/config.py:15
Code: AWS_KEY = "AKIAIOSFODNN7EXAMPLE"
[HIGH] SQL Injection (f-string)
File: src/db.py:42
Code: cursor.execute(f"SELECT * FROM users WHERE id={user_id}")
--- Summary ---
Critical: 1 | High: 1 | Medium: 0 | Low: 0
Total findings: 2
JSON 出力
{
"target": "/path/to/project",
"scan_time": "2026-04-14T10:30:00",
"findings": [
{
"scanner": "secrets",
"name": "AWS Access Key ID",
"severity": "critical",
"file": "src/config.py",
"line": 15,
"snippet": "AWS_KEY = \"AKIAIOSFODNN7EXAMPLE\"",
"category": "secret-pattern"
}
],
"summary": {"critical": 1, "high": 0, "medium": 0, "low": 0, "total": 1}
}
終了コード
| 終了コード | 意味 |
|---|---|
0 | 検出事項なし |
1 | 検出事項あり(セキュリティ上の問題が 1 件以上) |
2 | スキャナー内部エラー |
前提条件
- Python 3.7 以降(標準ライブラリのみを使用)
- 依存関係のスキャンには、該当するツールが必要です:Node.js プロジェクトでは
npm、Python プロジェクトではpip-audit - 監査ツールが見つからない場合、そのモジュールは通知を表示してスキップされます。他のモジュールは通常どおり実行を続けます
コメント
Markdown 対応