
Goで書かれた脆弱性スキャナーで、https://osv.dev が提供するデータを使用します。
OSV-Scannerを使用して、プロジェクトの依存関係に影響する既存の脆弱性を発見しましょう。 OSV-Scannerは、OSVデータベースへの公式サポート付きフロントエンドと、プロジェクトの依存関係リストをそれらに影響する脆弱性に結び付けるOSV-ScalibrへのCLIインターフェースを提供します。
OSV-Scannerは、幅広いプロジェクトタイプ、パッケージマネージャー、機能をサポートしています。これらに限定されません:
OSV-Scannerは、この機能を提供するために、拡張可能なOSV-Scalibrライブラリを内部で使用しています。現在サポートされていない言語やパッケージマネージャーがある場合は、機能リクエストを提出してください。
基盤となるデータベースであるOSV.devは、クローズドソースのアドバイザリデータベースやスキャナーと比較していくつかの利点があります:
以上のすべてにより、正確で実用的な脆弱性通知が実現され、解決に必要な時間が短縮されます。詳細はOSV.devをご覧ください!
OSV-Scannerをインストールするには、ドキュメントのインストールセクションを参照してください。OSV-Scannerのリリースは、GitHubリポジトリのリリースページにあります。推奨される方法は、お使いのプラットフォーム用のプリビルドバイナリをダウンロードすることです。または、go install github.com/google/osv-scanner/v2/cmd/osv-scanner@latestを使用してソースからビルドすることもできます。
詳細については、詳細なドキュメントを読んでOSV-Scannerの使用方法を学んでください。各機能の詳細については、このREADMEのタイトルをクリックしてください。
注意:これらは最新のOSV-Scanner V2ベータ版の説明です。V1を使用している場合は、代わりにV1のREADMEとドキュメントを確認してください。
$ osv-scanner scan source -r /path/to/your/dir
このコマンドは、指定されたディレクトリを再帰的にスキャンして、package.json、go.mod、pom.xmlなどのサポートされているパッケージファイルを探し、発見された脆弱性を出力します。
OSV-Scannerには、コール分析を使用して脆弱な関数がプロジェクトで実際に使用されているかどうかを判断するオプションがあり、誤検知が減り、実用的なアラートが得られます。
OSV-Scannerは、ベンダリングされたC/C++コードを検出して脆弱性スキャンを行うこともできます。詳細はこちらを参照してください。
OSV-Scannerは、11以上の言語エコシステムと19以上のロックファイルタイプをサポートしています。お使いのエコシステムがカバーされているかどうかを確認するには、詳細なドキュメントを参照してください。
OSV-Scannerは、コンテナイメージの包括的なレイヤー認識スキャンもサポートしており、以下のオペレーティングシステムパッケージと言語固有の依存関係の脆弱性を検出します。
| ディストリビューションのサポート | 言語アーティファクトのサポート |
|---|---|
| Alpine OS | Go |
| Debian | Java |
| Ubuntu | Node |
| Python |
サポートの詳細については、完全なドキュメントを参照してください。
使用法:
$ osv-scanner scan image my-image-name:tag

deps.devデータを使用して依存関係のライセンスを確認します。概要を表示するには:
osv-scanner --licenses path/to/repository
許可されたライセンスリスト(SPDX形式)に対して確認するには:
osv-scanner --licenses="MIT,Apache-2.0" path/to/directory
ローカルのOSVデータベースに対してプロジェクトをスキャンします。最初のデータベースダウンロード後はネットワーク接続は不要です。データベースは手動でダウンロードすることもできます。
osv-scanner --offline --download-offline-databases ./path/to/your/dir
[!WARNING] ガイド付き修復(
fixコマンド)は、信頼できないプロジェクトで実行すると危険を伴う可能性があります。パッケージマネージャーがスクリプトを実行したり、プロジェクトで指定された外部レジストリを参照したりする可能性があります。続行する前に、ソースコードとアーティファクトを信頼できることを確認してください。
OSV-Scannerは、依存関係の深さ、最小深刻度、修正戦略、投資対効果などの基準に基づいてパッケージバージョンのアップグレードを提案する機能であるガイド付き修復を提供します。 現在、以下のファイルの脆弱性の修復をサポートしています:
これは、ヘッドレスCLIコマンドとしても、インタラクティブモードとしても利用できます。
$ osv-scanner fix \
--max-depth=3 \
--min-severity=5 \
--ignore-dev \
--strategy=in-place \
-L path/to/package-lock.json
$ osv-scanner fix \
-M path/to/package.json \
-L path/to/package-lock.json
OSV-Scannerは動作中に以下の外部サービスと通信します:
脆弱性情報の主要なデータソースです。OSV-ScannerはこのAPIにクエリを送信して、既知の脆弱性がないかパッケージをチェックし、ベンダリングされたC/C++依存関係を特定します。送信されるデータには、パッケージ名、バージョン、エコシステム、ファイルハッシュが含まれます。--offlineモードを使用すると、ネットワークリクエストを無効にして、代わりにローカルデータベースに対してスキャンできます。
補足的なパッケージ情報に使用されます:
--licensesフラグ): パッケージのライセンス情報を取得します送信されるデータには、パッケージ名、バージョン、エコシステムが含まれます。ソースコードは送信されません。
依存関係の解決に(deps.devの代わりに)ネイティブレジストリを使用する場合、OSV-Scannerは以下のレジストリにクエリを送信する場合があります:
| レジストリ | URL | 用途 |
|---|---|---|
| Maven Central | repo.maven.apache.org/maven2 | MavenパッケージのメタデータとPOMファイル |
バグと思われる問題がある場合は、GitHubのissue追跡システムを使用してください。issueを提出する前に、既存のissueを検索して、あなたの問題がすでにカバーされていないか確認してください。
osv-scannerへのコードの貢献コードの貢献方法については、CONTRIBUTING.mdを参照してください。
| エコシステム | ファイル形式(タイプ) | サポートされている修復戦略 |
|---|
| npm | package-lock.json (lockfile) | in-place |
| npm | package.json (manifest) | relock |
| Maven | pom.xml (manifest) | override |
| npm Registry | registry.npmjs.org | npmパッケージのメタデータ |
| PyPI | pypi.org | Pythonパッケージのメタデータ |