1. 概述

在应用开发中,我们通常需要引入第三方库或框架。这些依赖能显著提升开发效率,但同时也可能引入安全漏洞。

本文将介绍一款工具,帮助识别项目中的已知漏洞。

2. Dependency-Check 简介

我们选择的是 OWASP Dependency-Check 插件。这是一个软件组件分析工具,通过匹配 通用平台枚举(CPE) 标识符和 通用漏洞披露(CVE) 条目,识别存在已知漏洞的应用依赖。

核心概念
✅ CPE:软件/包的标准化命名规范
✅ CVE:公开的已知漏洞和风险参考库

该插件通过美国国家标准与技术研究院(NIST)提供的 国家漏洞数据库(NVD) 数据流自动更新漏洞信息。除 Maven 插件外,还支持 Gradle 等集成方式。

3. Maven 集成配置

3.1 基础配置

pom.xmlplugins 节点添加以下配置:

<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 评分标准

每个漏洞都关联 通用漏洞评分系统(CVSS) 分数:
CVSS 评分示例

关键特性
✅ 分数范围: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 是保障供应链安全的利器,通过以下步骤实现自动化漏洞检测:

  1. 集成配置:在构建工具中添加插件
  2. 阈值控制:根据 CVSS 分数设置构建失败条件
  3. 报告分析:通过 HTML 报告定位高风险依赖

最佳实践
✅ 将扫描集成到 CI/CD 流水线
✅ 定期更新 NVD 数据库
✅ 结合人工审计处理误报

对于有经验的开发者,建议重点关注高危依赖(CVSS ≥7.0)的升级方案,避免在安全问题上踩坑。


原始标题:Check Component Vulnerabilities Using OWASP Dependency-Check | Baeldung