cmd/osv-scanner/ 配下):
scan source … ローカルディレクトリの再帰スキャン(package.json, go.mod, pom.xml, Cargo.lock など 19+ 種類のロックファイル対応)scan image … Docker/OCI イメージをレイヤ単位で解析(Alpine/Debian/Ubuntu + Go/Java/Node/Python)fix … 実験的な Guided Remediation(npm / Maven で安全にバージョンを上げる提案)update / mcp / --licenses … 依存の更新支援、MCP サーバ連携、deps.dev に基づくライセンス監査actions/)。--call-analysis により「脆弱関数が実際に呼ばれているか」で偽陽性を抑えられる。fix による 推奨バージョンの自動提案 という踏み込んだ修正支援を持つ。--offline --download-offline-databases で DB をローカルにミラーし、ネットワーク遮断環境や閉域 CI でも利用可能(多くの SaaS 型 SCA では困難)。インストール
go install github.com/google/osv-scanner/v2/cmd/osv-scanner@latest、または Releases からバイナリ取得、Docker イメージ、GitHub Action (actions/) も選択可。
# ① ソースツリー全体を再帰スキャン
osv-scanner scan source -r /path/to/repo
# ② コンテナイメージをスキャン
osv-scanner scan image my-image:tag
# ③ ライセンス監査(許可リスト方式)
osv-scanner --licenses="MIT,Apache-2.0" /path/to/repo
設定・無視ルールの調整
ルート直下の osv-scanner.toml に誤検知・未対応脆弱性の IgnoredVulns、パスごとの例外、ライセンス許可リストを記述。docs/configuration.md 参照。
出力形式を選ぶ
--format で table(既定)、json、sarif(GitHub Code Scanning 連携)、html、cyclonedx など。CI なら SARIF をアップロードするのが定番。
osv-scanner fix -M package.json -L package-lock.json # 対話型
osv-scanner fix --strategy=in-place --max-depth=3 --min-severity=5 -L package-lock.json
依存の深さ・最低 Severity・戦略(in-place / relock / override)を指定し、ROI の高い修正案を適用。
CI への組み込み
actions/ 配下の reusable workflow を呼ぶか、Docker で実行 → SARIF を GitHub Security タブへ。PR 差分に導入された脆弱性のみ失敗させる運用も可能。オフライン CI では事前に DB を配布。