Dependency CheckOWASP(Open WebApplication Security Project)开发的一个实用开源程序,用于识别项目依赖项并检查是否存在任何已知的,公开披露的漏洞。

功能介绍

  • 自动漏洞检测: Dependency-Check 可以自动分析项目的依赖关系,并与公开的漏洞数据库进行比对,以查找可能受到的已知漏洞。
  • 多种漏洞数据库支持: 工具可以与多个公开的漏洞数据库(如 NVD - National Vulnerability Database)进行集成,以获取最新的漏洞信息。
  • 生成报告: Dependency-Check 生成漏洞报告,详细列出项目中存在的漏洞、受影响的组件和建议的修复措施。
  • 集成到构建流程: 工具可以集成到项目的构建流程中,使每次构建时都能自动执行漏洞检测。
  • CVSS 分数和严重性级别: Dependency-Check 可以为每个漏洞提供 CVSS(Common Vulnerability Scoring System)分数,帮助你了解漏洞的严重程度。
  • 定期更新: 工具可以定期更新漏洞数据库,确保你始终获取最新的漏洞信息。

检测流程

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

Dependency Check 两种使用方式

  • 命令行方式:可扫描jar包,无源码也可扫描
  • Maven插件方式:有源码直接配置插件到pom文件中,使用更方便

命令行方式

Maven插件方式

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

        <plugins>
            <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>
        </plugins>

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

介绍一下各个选项的作用:

  • aggregate 分析当前项目及其子项目并生成报告。
  • check 分析当前项目并生成报告。
  • update-only 更新本地漏洞数据库。
  • purge 清除本地漏洞数据副本。

第一次执行会下载漏洞库,数据量大概在20多万,视网络情况等待时间可能在10-20分钟左右。
微信截图_20240729120358

TIPS 如果高版本由于网络问题一直更新失败,那么可以把version改为低版本试试,例如<version>5.3.0</version>

执行完成后,扫描报告会生成到target路径下
微信截图_20240729115444

用浏览器直接打开该文件即可查看扫描报告。

报告解析

概览

报告最上方是概览部分。

微信截图_20240729132320

概览部分说明

  • dependency-check version: 引擎版本
  • Report Generated On: 报告生成时间
  • Dependencies Scanned: 扫描的依赖项数量
  • Vulnerable Dependencies: 脆弱的依赖项数量
  • Vulnerabilities Found: 漏洞数量
  • Vulnerabilities Suppressed: 已应对的漏洞数量
  • NVD CVE Checked: NVD CVE 漏洞库检查时间
  • NVD CVE Modified: NVD CVE 漏洞库更新时间
  • VersionCheckOn: 版本检查时间