
dep-scan v6.3.0
下一代依赖漏洞扫描器,具备可达性分析、SBOM生成、许可证审计以及容器镜像扫描,用于CI/CD集成。
简介
OWASP dep-scan 是一款新一代安全与风险审计工具,基于项目依赖的已知漏洞、安全公告和许可证限制进行检测。它支持本地仓库和容器镜像作为输入,非常适合与 ASPM/VM 平台集成,也适用于 CI 环境。
目录
功能特性
- 扫描大多数应用代码(本地仓库、Linux 容器镜像、Kubernetes 清单和操作系统),识别已知 CVE 并进行优先级排序
- 对多种语言执行高级可达性分析(参见下方的可达性矩阵)
- 包漏洞扫描在本地执行,速度相当快。无需使用服务器
- 生成包含漏洞披露报告(VDR)信息的软件物料清单(SBOM)
- 生成通用安全公告框架(CSAF)2.0/2.1 VEX 文档(请查看 CSAF Readme)
- 针对依赖混淆攻击和维护风险执行深度包风险审计(参见风险审计文档)
精确的可达数据流
基于完整上下文提供详细的数据流,用于识别应用程序中的可达路径和不可达路径。

可达性矩阵
dep-scan 通过四个切片器计算七种语言生态系统的可达性。如果存在漏洞的包的代码实际位于执行路径上,则标记为可达;而仅在 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 会将其转换为共享流水线,因此一个实际被调用的 crate(例如针对 RUSTSEC-2020-0071 的 time::now())会被判定为可达,而仅仅存在的 crate 则不会。请参阅 Rust 可达性指南。
depscan -i ./my-rust-app -o ./reports --profile research
Go(golem)。 dep-scan 会直接为 Go 项目调用 golem(需要 go 位于 PATH 中),当模块的函数位于被追踪的路径上时,将该模块标记为 Reachable。对于模块缓存已预热的不可信仓库,请使用 --go-analyzer-network offline。参见 Go 可达性指南。
depscan -i ./my-go-app -o ./reports -t go
.NET (dosai)。 cdxgen 运行 dosai,它会为每个包输出明确的可达性判定(PackageReachability,包含 ReachabilityKind 和 Confidence),dep-scan 将其视为权威结论,因此实际被调用的 NuGet 包(例如在受控输入上调用 JsonConvert.DeserializeObject)会被判定为 Reachable。对已还原的目录树进行扫描以获取带版本的 purl。参见 .NET 可达性指南。
depscan -i ./my-dotnet-app -o ./reports -t dotnet
JVM、JavaScript/TypeScript、Python 和 PHP(atom)。 这四个生态系统共用 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。
你可以直接使用各种选项调用扫描命令。
cd <project to scan>
depscan --src $PWD --reports-dir $PWD/reports
完整选项列表如下: