
dep-scan v6.3.0
CI/CD統合のためのリーチャビリティ分析、SBOM生成、ライセンス監査、コンテナイメージスキャンを備えた次世代依存関係脆弱性スキャナ。
はじめに
OWASP dep-scan は、プロジェクトの依存関係における既知の脆弱性、アドバイザリ、ライセンス制限に基づく次世代のセキュリティおよびリスク監査ツールです。入力としてローカルリポジトリとコンテナイメージの両方をサポートしており、ASPM/VM プラットフォームや CI 環境との統合に最適です。
目次
機能
- ほとんどのアプリケーションコード (ローカルリポジトリ、Linux コンテナイメージ、Kubernetes マニフェスト、OS) をスキャンして既知の CVE を特定し、優先順位付けを行う
- 複数の言語に対して高度な到達可能性解析を実行する (下記の到達可能性マトリックスを参照)
- パッケージの脆弱性スキャンはローカルで実行され、非常に高速です。サーバーは使用しません
- 脆弱性開示レポート (VDR) 情報を含むソフトウェア部品表 (SBOM) を生成する
- Common Security Advisory Framework (CSAF) 2.0/2.1 VEX ドキュメントを生成する (CSAF Readme を参照)
- 依存関係混同攻撃やメンテナンスリスクに対する詳細なパッケージリスク監査を実行する (リスク監査ドキュメント を参照)
正確な到達可能データフロー
完全なコンテキストに基づいて、アプリケーション内の到達可能なパスと到達不可能なパスの両方を特定するための詳細なデータフローです。

到達可能性マトリックス
dep-scan は、4 つのスライサーを通じて 7 つの言語エコシステムの到達可能性を計算します。コードが実際に実行パス上にある脆弱なパッケージは Reachable とマークされ、BOM で宣言されているだけで一度も呼び出されていないパッケージはマークされません。すべてのスライサーは同じ共有の purl キー付き到達可能性エンジンにデータを供給するため、言語間で動作が統一されています。到達可能性はデフォルトで有効です (--reachability-analyzer FrameworkReachability)。SemanticReachability はさらに、到達したサービス、エンドポイント、およびビルド後 (バイナリ/コンテナ) の到達可能性を属性付けします。
| 言語 / エコシステム | 到達可能性エンジン | デフォルトアナライザー |
|---|---|---|
| Java / JVM (Groovy, Kotlin, Scala) | atom | FrameworkReachability |
| JavaScript / TypeScript | atom | FrameworkReachability |
| Python | atom | FrameworkReachability |
| PHP | atom | FrameworkReachability |
| Rust | rusi | FrameworkReachability |
| Go | golem | FrameworkReachability |
| .NET (C#, VB, F#, R) | dosai | FrameworkReachability |
到達可能性と優先順位付けの背後にある概念については、到達可能性モデルと優先順位付けの章をお読みください。言語ごとの実例については、言語ガイドを参照してください。コンプライアンスの説明(VDR および CSAF VEX)については、VDR ガイドと CSAF VEX ガイドを参照してください。
到達可能性は --profile research でデフォルトで有効になっており、これは到達可能性が有効な場合に dep-scan が使用するプロファイルです。以下のコマンドで開始するのに十分です。言語ごとのガイドでは、バイナリ解決、バックエンドとネットワークの安全性、復元要件、およびリポジトリ内のフィクスチャでの実例について説明しています。
Rust (rusi)。 cdxgen は rusi を実行し、そのレポートを永続化します。dep-scan はそれを共有パイプラインに変換するため、実際に呼び出されているクレート(たとえば RUSTSEC-2020-0071 に対する time::now())は Reachable となり、単に存在するだけのクレートはそうなりません。詳細は Rust 到達可能性ガイドを参照してください。
depscan -i ./my-rust-app -o ./reports --profile research
Go (golem)。 dep-scan は Go プロジェクトに対して golem を直接呼び出し(go が PATH 上にある必要があります)、モジュールの関数がトレースされたパス上にある場合にそのモジュールを Reachable とマークします。モジュールキャッシュが温まっている信頼できないリポジトリには --go-analyzer-network offline を使用してください。詳細は Go reachability guide を参照してください。
depscan -i ./my-go-app -o ./reports -t go
.NET (dosai)。 cdxgen は dosai を実行し、パッケージごとの明示的な到達可能性判定(ReachabilityKind と Confidence を伴う PackageReachability)を出力します。dep-scan はこれを信頼できる情報として扱うため、実際に呼び出されている NuGet パッケージ(たとえば制御された入力に対する JsonConvert.DeserializeObject)は Reachable と判定されます。復元済みのツリーをスキャンしてバージョン付き purl を取得します。詳細は .NET 到達可能性ガイド を参照してください。
depscan -i ./my-dotnet-app -o ./reports -t dotnet
JVM、JavaScript/TypeScript、Python、PHP(atom)。 これら4つのエコシステムは atom スライサーを共有しており、言語に依存しない中間表現を構築し、静的スライシングを実行します。JVM、JS、Python、PHP の到達可能性ガイドを参照してください。
depscan --profile research -t java -i ./my-java-app -o ./reports --explain
フレームワーク中心の到達可能性を超えて、エンドポイント、サービス、ビルド後の階層まで対応するには、--reachability-analyzer SemanticReachability をライフサイクル BOM の --bom-dir とともに指定します。詳しくはセマンティック到達可能性ガイドを参照してください。
CVE に関する明確な洞察
説明を読み通すことなく、CVE を明確に理解できます。

自動優先順位付け
注意を払う必要がある CVE にのみ集中できます。

プロアクティブな姿勢を維持
高度な脆弱性およびエクスプロイト予測により、常に一歩先を行けます。

脆弱性データソース
- OSV
- NVD
- GitHub
- NPM
- Linux vuln-list
Linux ディストリビューション
- AlmaLinux
- Debian
- Alpine
- Amazon Linux
- Arch Linux
- RHEL/CentOS
- Rocky Linux
- Ubuntu
- OpenSUSE/SLES
- Photon
- Chainguard
- Wolfi OS
クイックスタート
dep-scan は継続的インテグレーション (CI) 中の利用や、ローカル開発ツールとして最適です。
プロジェクトをローカルでスキャンする (Python バージョン)
sudo npm install -g @cyclonedx/cdxgen
# Normal version recommended for most users (MIT)
pip install owasp-depscan
# For a full version with all extensions and server mode (Multiple Licenses)
pip install owasp-depscan[all]
これにより、cdxgen と depscan という2つのコマンドがインストールされます。
さまざまなオプションを指定して、scan コマンドを直接呼び出すことができます。
cd <project to scan>
depscan --src $PWD --reports-dir $PWD/reports
オプションの完全なリストは以下のとおりです: