1. 概述
在应用开发中,我们通常需要引入第三方库或框架。这些依赖能显著提升开发效率,但同时也可能引入安全漏洞。
本文将介绍一款工具,帮助识别项目中的已知漏洞。
2. Dependency-Check 简介
我们选择的是 OWASP Dependency-Check 插件。这是一个软件组件分析工具,通过匹配 通用平台枚举(CPE) 标识符和 通用漏洞披露(CVE) 条目,识别存在已知漏洞的应用依赖。
核心概念
✅ CPE:软件/包的标准化命名规范
✅ CVE:公开的已知漏洞和风险参考库
该插件通过美国国家标准与技术研究院(NIST)提供的 国家漏洞数据库(NVD) 数据流自动更新漏洞信息。除 Maven 插件外,还支持 Gradle 等集成方式。
3. Maven 集成配置
3.1 基础配置
在 pom.xml
的 plugins
节点添加以下配置:
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>11.1.1</version>
<configuration>
<failBuildOnCVSS>7</failBuildOnCVSS>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
3.2 执行方式
插件已默认绑定到 verify
阶段,可通过以下命令触发:
# 方式1:通过生命周期触发
$ mvn verify
# 方式2:直接调用插件
$ mvn dependency-check:check
3.3 结果输出
当检测到漏洞时,控制台会输出警告信息:
[WARNING]
One or more dependencies were identified with known vulnerabilities in dependency-check:
logback-core-1.5.6.jar (pkg:maven/ch.qos.logback/[email protected], cpe:2.3:a:qos:logback:1.5.6:*:*:*:*:*:*:*) : CVE-2024-12798, CVE-2024-12801
同时生成详细 HTML 报告(文件路径:target/dependency-check-report.html
):
4. CVSS 评分机制
4.1 评分标准
关键特性
✅ 分数范围:0-10(分数越高风险越大)
✅ 高危阈值:≥7.0 分
4.2 构建控制
通过 failBuildOnCVSS
参数控制构建失败阈值:
<configuration>
<failBuildOnCVSS>7</failBuildOnCVSS>
</configuration>
实战案例:
- 原报告最高分 5.9(未触发构建失败)
- 调整阈值为 5.0 后重新执行:
[ERROR] Failed to execute goal org.owasp:dependency-check-maven:11.1.1:check (default-cli) on project dependency-check:
[ERROR]
[ERROR] One or more dependencies were identified with vulnerabilities that have a CVSS score greater than or equal to '5.0':
[ERROR]
[ERROR] logback-core-1.5.6.jar: CVE-2024-12798(5.900000095367432)
[ERROR]
[ERROR] See the dependency-check report for more details.
⚠️ 踩坑提示:阈值设置过低可能导致 CI/CD 流程频繁中断,建议结合团队安全策略合理配置。
5. 总结
OWASP Dependency-Check 是保障供应链安全的利器,通过以下步骤实现自动化漏洞检测:
- 集成配置:在构建工具中添加插件
- 阈值控制:根据 CVSS 分数设置构建失败条件
- 报告分析:通过 HTML 报告定位高风险依赖
最佳实践
✅ 将扫描集成到 CI/CD 流水线
✅ 定期更新 NVD 数据库
✅ 结合人工审计处理误报
对于有经验的开发者,建议重点关注高危依赖(CVSS ≥7.0)的升级方案,避免在安全问题上踩坑。