
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自述文件)
- 对依赖混淆攻击和维护风险执行深度软件包风险审计(参见风险审计文档)
精确的可达数据流
基于完整上下文,详细的数据流可识别应用程序中可达和不可达路径。

可达性矩阵
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 在开启可达性时使用的配置。以下命令足以开始;每种语言指南涵盖了二进制解析、后端和网络安全、恢复要求以及仓库内 fixture 的实际示例。
Rust (rusi). cdxgen 运行 rusi 并持久化其报告,dep-scan 将其转换为共享管道,因此实际上被调用的 crate(例如 time::now() 用于 RUSTSEC-2020-0071)会被标记为可达,而仅存在的则不会。请参见 Rust 可达性指南。```bash
depscan -i ./my-rust-app -o ./reports --profile research
**Go (golem).** dep-scan 直接调用 [golem](https://github.com/cdxgen/cdxgen-plugins-bin) 用于 Go 项目(需要在 `PATH` 中有 `go`),当模块的函数位于追踪路径上时,将其标记为 Reachable。对于具有预热模块缓存的非可信仓库,使用 `--go-analyzer-network offline`。参见 [Go 可达性指南](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 将其视为权威结果,因此一个实际调用的 NuGet 包(例如,对受控输入调用 JsonConvert.DeserializeObject)即可达。扫描已还原的依赖树以获取带版本号的 purls。请参阅 .NET 可达性指南。```bash
depscan -i ./my-dotnet-app -o ./reports -t dotnet
**JVM、JavaScript/TypeScript、Python 和 PHP(atom)。** 这四种生态系统共享 [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`。