原创

maven使用Dependency-Check来扫描安全漏洞

在现代软件开发中,使用开源库和第三方依赖项已成为常态。然而,这些依赖项可能包含已知的安全漏洞,给应用程序带来潜在的风险。为了解决这个问题,OWASP Dependency-Check 应运而生。本文将介绍 OWASP Dependency-Check 的功能、安装方法、使用步骤以及最佳实践。

1.什么是 OWASP Dependency-Check?

OWASP Dependency-Check 是一个开源工具,旨在帮助开发人员识别项目中使用的库和组件的已知漏洞。它通过扫描项目的依赖项,生成详细的报告,帮助团队及时发现并修复安全问题。该工具支持多种编程语言和构建工具,包括 Java、.NET、Node.js 等。

2.主要功能

  1. 漏洞检测:通过与国家漏洞数据库(NVD)和其他漏洞数据库对比,识别项目中使用的库的已知漏洞。
  2. 多种输出格式:支持生成多种格式的报告,包括 HTML、XML 和 JSON,方便团队进行审查和记录。
  3. 集成支持:可以与常见的构建工具(如 Maven、Gradle、Ant)和 CI/CD 工具(如 Jenkins)集成,实现自动化扫描。
  4. 定期更新:定期更新漏洞数据库,确保检测结果的准确性和时效性。

3.检测流程

  • 数据源准备: 在执行检查前,从 National Vulnerability Database (NVD) 和 OWASP Dependency-Check Data下载最新的漏洞数据,并将其存储在本地数据库中,以供后续的检查使用。
  • 依赖项分析: 分析应用程序的依赖性结构。这包括扫描项目的源代码、配置文件和构建文件,以识别所使用的开源库、框架和组件。
  • 漏洞检测: 通过一系列分析器遍历项目的依赖项列表,并与本地数据库中的漏洞信息进行比对。
  • 数据对比与标识: 当分析器在项目依赖项中发现与本地数据库匹配的已知漏洞时,标识相关的组件,并记录漏洞的详细信息,如 CVE 编号、受影响版本范围等。
  • 报告生成: 完成漏洞检测后,生成详细的漏洞报告。报告列出了受影响组件的清单,提供漏洞的描述、严重程度、CVE 编号以及可能的修复建议。

4.如何j结合maven使用 Dependency-Check?

在pom.xml配置文件中引入插件

<plugin>
    <groupId>org.owasp</groupId>
    <artifactId>dependency-check-maven</artifactId>
    <version>10.0.3</version>
    <executions>
        <execution>
            <goals>
                <goal>aggregate</goal>
            </goals>
        </execution>
    </executions>
</plugin>

在IDEA主界面的右边侧边栏上找到Maven模块,执行 Plugins 目录下 Depedancy-check 中的 aggregate 。

maven

介绍一下各个选项的作用:
  • aggregate 分析当前项目及其子项目并生成报告。
  • check 分析当前项目并生成报告。
  • update-only 更新本地漏洞数据库。
  • purge 清除本地漏洞数据副本。
第一次执行会下载漏洞库,数据量大概在20多万,视网络情况等待时间可能在10-20分钟左右。
One or more dependencies were identified with known vulnerabilities in Java-demo:

bcpkix-jdk15on-1.70.jar (pkg:maven/org.bouncycastle/bcpkix-jdk15on@1.70, cpe:2.3:a:bouncycastle:bouncy_castle_for_java:1.70:*:*:*:*:*:*:*) : CVE-2023-33202
bcprov-jdk15on-1.70.jar (pkg:maven/org.bouncycastle/bcprov-jdk15on@1.70, cpe:2.3:a:bouncycastle:bouncy-castle-crypto-package:1.70:*:*:*:*:*:*:*, cpe:2.3:a:bouncycastle:bouncy_castle_crypto_package:1.70:*:*:*:*:*:*:*, cpe:2.3:a:bouncycastle:bouncy_castle_for_java:1.70:*:*:*:*:*:*:*, cpe:2.3:a:bouncycastle:legion-of-the-bouncy-castle-java-crytography-api:1.70:*:*:*:*:*:*:*, cpe:2.3:a:bouncycastle:the_bouncy_castle_crypto_package_for_java:1.70:*:*:*:*:*:*:*) : CVE-2024-34447, CVE-2024-29857, CVE-2024-30171, CVE-2023-33202, CVE-2023-33201
bcutil-jdk15on-1.70.jar (pkg:maven/org.bouncycastle/bcutil-jdk15on@1.70, cpe:2.3:a:bouncycastle:bouncy_castle_for_java:1.70:*:*:*:*:*:*:*) : CVE-2023-33202
commons-compiler-3.0.8.jar (pkg:maven/org.codehaus.janino/commons-compiler@3.0.8, cpe:2.3:a:janino_project:janino:3.0.8:*:*:*:*:*:*:*) : CVE-2023-33546
commons-compress-1.21.jar (pkg:maven/org.apache.commons/commons-compress@1.21, cpe:2.3:a:apache:commons_compress:1.21:*:*:*:*:*:*:*) : CVE-2024-25710, CVE-2024-26308
commons-io-2.11.0.jar (pkg:maven/commons-io/commons-io@2.11.0, cpe:2.3:a:apache:commons_io:2.11.0:*:*:*:*:*:*:*) : CVE-2024-47554
janino-3.0.8.jar (pkg:maven/org.codehaus.janino/janino@3.0.8, cpe:2.3:a:janino_project:janino:3.0.8:*:*:*:*:*:*:*) : CVE-2023-33546
json-path-2.8.0.jar (pkg:maven/com.jayway.jsonpath/json-path@2.8.0, cpe:2.3:a:json-path:jayway_jsonpath:2.8.0:*:*:*:*:*:*:*) : CVE-2023-51074
logback-core-1.2.11.jar (pkg:maven/ch.qos.logback/logback-core@1.2.11, cpe:2.3:a:qos:logback:1.2.11:*:*:*:*:*:*:*) : CVE-2023-6378


See the dependency-check report for more details.
执行完成后,扫描报告会生成到target路径下的dependency-check-report.html result

5.结论

OWASP Dependency-Check 是一个强大的工具,可以帮助开发团队识别和管理项目中的安全风险。通过定期扫描和及时修复漏洞,团队可以显著提高软件的安全性,降低潜在的安全威胁。无论是个人开发者还是大型企业,使用 OWASP Dependency-Check 都是确保软件安全的重要一步。

正文到此结束
Loading...