Dependency Check 是 OWASP(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 。
介绍一下各个选项的作用:
- aggregate 分析当前项目及其子项目并生成报告。
- check 分析当前项目并生成报告。
- update-only 更新本地漏洞数据库。
- purge 清除本地漏洞数据副本。
第一次执行会下载漏洞库,数据量大概在20多万,视网络情况等待时间可能在10-20分钟左右。
TIPS 如果高版本由于网络问题一直更新失败,那么可以把version改为低版本试试,例如
<version>5.3.0</version>
执行完成后,扫描报告会生成到target路径下
用浏览器直接打开该文件即可查看扫描报告。
报告解析
概览
报告最上方是概览部分。
概览部分说明
- 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: 版本检查时间