
dep-scan v6.3.0
CI/CD統合のためのリーチャビリティ分析、SBOM生成、ライセンス監査、コンテナイメージスキャンを備えた次世代依存関係脆弱性スキャナ。
Introduction
OWASP dep-scan は、既知の脆弱性、アドバイザリ、およびプロジェクト依存関係のライセンス制限に基づく、次世代のセキュリティおよびリスク監査ツールです。入力としてローカルリポジトリとコンテナイメージの両方をサポートしており、ASPM/VM プラットフォームや CI 環境への統合に最適です。
目次
機能
- ほとんどのアプリケーションコード(ローカルリポジトリ、Linuxコンテナイメージ、Kubernetesマニフェスト、OS)をスキャンし、優先順位付けされた既知のCVEを特定します
- 複数の言語に対して高度な到達可能性分析を実行します(以下の到達可能性マトリックスを参照)
- パッケージ脆弱性スキャンはローカルで実行され、非常に高速です。サーバーは使用されません。
- Software Bill-of-Materials (SBOM) と Vulnerability Disclosure Report (VDR) 情報を生成します
- 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 到達可能性ガイド を参照してください。```bash
depscan -i ./my-rust-app -o ./reports --profile research
**Go (golem).** dep-scanは、Goプロジェクトに対して [golem](https://github.com/cdxgen/cdxgen-plugins-bin) を直接呼び出し(`PATH` に `go` が必要)、その関数がトレースされたパス上にある場合にモジュールを Reachable としてマークします。信頼できないリポジトリでウォームモジュールキャッシュを使用する場合は、`--go-analyzer-network offline` を使用してください。詳細は [Go reachability guide](https://depscan.readthedocs.io/languages/go-reachability) を参照してください。```bash
depscan -i ./my-go-app -o ./reports -t go
.NET (dosai). cdxgen は dosai を実行し、パッケージごとの明示的な到達可能性判定(PackageReachability と ReachabilityKind、Confidence)を出力します。dep-scan はこれを信頼できる情報として扱うため、例えば制御された入力に対して JsonConvert.DeserializeObject を実際に呼び出す NuGet パッケージは「到達可能 (Reachable)」と判断されます。復元されたツリーからバージョン付きの purl をスキャンします。詳細は .NET 到達可能性ガイド を参照してください。```bash
depscan -i ./my-dotnet-app -o ./reports -t dotnet
**JVM、JavaScript/TypeScript、Python、PHP(atom)。** これら4つのエコシステムは、言語に依存しない中間表現を構築し、静的スライシングを実行する[atom](https://github.com/AppThreat/atom)スライサーを共有しています。詳細は [JVM、JS、Python、PHPのリーチャビリティガイド](https://depscan.readthedocs.io/languages/jvm-js-python-php-reachability) を参照してください。```bash
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版)```bash
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つのコマンドがインストールされます。