リポジトリセキュリティスキャン は何をしますか?
対象リポジトリの高確度なセキュリティ問題をスキャンし、レポートを生成します。
機能(MVP)
- シークレットスキャン - gitleaks を使用(ローカルスキャン、ログ内のシークレットは伏せ字になります)
- 依存関係脆弱性スキャン - osv-scanner を使用(依存関係をOSVと照合)
出力物:
report.md— 人間が読めるサマリーsummary.json— 機械可読なサマリー- 各ツールの生出力(
gitleaks.json、osv.json)+ ログ
このスタックを選んだ理由(シグナル/ノイズ)
- gitleaks:標準設定が優れており、高速、
.gitleaks.toml/.gitleaksignoreで誤検知を簡単に抑制できます。 - osv-scanner:OSV 経由で正確な依存関係脆弱性マッチングを行います(広範なエコシステムをサポートし、一般的にエコシステム固有の「audit」コマンドよりノイズが少ない)。
(Semgrep/SAST や言語固有の監査ツールなどの他のスキャナーは、後で明示的な --deep モードの背後で追加可能で、ノイズの多いCI失敗を避けられます。)
安全性
- ファイルの読み取り専用スキャンです。
- ソースコードをアップロードしません。
- gitleaks の出力は伏せられ(
--redact)、レポートはシークレットを出力しません。 - osv-scanner はデフォルトでネットワークアクセスを使用してOSVに問い合わせます(deps.devからパッケージメタデータを参照することもあります)。依存関係メタデータを送信しますが、ソースコードは送信しません。
使い方
ローカル
このリポジトリから実行:
# このリポジトリをスキャンし、出力を .repo-security-scan/out に書き込む
bash scripts/repo-security-scan/scan.sh --repo .
# 別のリポジトリをスキャン
bash scripts/repo-security-scan/scan.sh --repo /path/to/target --out /tmp/repo-security-scan-out
# レポートを表示
cat .repo-security-scan/out/report.md
デモ
bash scripts/demo.sh # このリポジトリをスキャン
bash scripts/demo.sh /path/repo # 対象リポジトリをスキャン
出力物
出力ディレクトリ内(デフォルト: <skill-suite>/.repo-security-scan/out):
report.mdsummary.jsongitleaks.json、gitleaks.logosv.json、osv.log
終了コード:
0検出結果なし1検出結果あり2スキャナーエラー(ツールの欠落、実行失敗)
設定 / 許可リスト
特定のプロジェクトをスキャンする際は、リポジトリローカルの設定を推奨します:
- gitleaks:
<repo>/.gitleaks.toml<repo>/.gitleaksignore
- osv-scanner:
<repo>/osv-scanner.toml(そのディレクトリにのみ適用)
このスキルスイートには、以下のデフォルト設定も同梱されています:
.repo-security-scan/gitleaks.toml.repo-security-scan/.gitleaksignore.repo-security-scan/osv-scanner.toml
特定のosv-scanner設定ファイルを強制する場合:
bash scripts/repo-security-scan/scan.sh --repo /path/repo --osv-config /path/to/osv-scanner.toml
前提条件のインストール
- macOS:
brew install gitleaks osv-scanner jq
- Ubuntu:
sudo apt-get update && sudo apt-get install -y jq- gitleaks + osv-scanner をリリースからインストールするか、
go installでコンパイルしてください。