引言
Dependency-Check 是一个开源工具,用于检测软件项目中使用的第三方库和组件是否存在已知的安全漏洞。它可以帮助开发团队及时发现和解决项目中的潜在安全风险,从而提高软件的安全性。
该工具通过分析项目的依赖关系,识别其中使用的第三方库和组件,并与已知的漏洞数据库(如 National Vulnerability Database)进行对比,以确定这些依赖项是否受到已知漏洞的影响。一旦发现存在安全漏洞的依赖项,Dependency-Check 将提供详细的报告,包括漏洞描述、影响范围、修复建议等信息,帮助开发者及时采取必要的措施来修复漏洞。
使用 Dependency-Check 工具可以在早期发现并解决项目中的安全问题,减少了软件开发生命周期中安全漏洞带来的风险和成本。它可以集成到持续集成(CI)环境中,实现自动化的安全检测,为软件项目的安全保障提供了可靠的基础。
DependencyCheck项目
Github 项目地址:https://github.com/jeremylong/DependencyCheck
文档地址:https://jeremylong.github.io/DependencyCheck/
使用
注意网络因素
原因不多叙述,漏洞数据库和一些依赖文件会使用到国外网站,例如github等
通过命令
MacOS
1.安装命令
通过Homebrew安装
$ brew install dependency-check
2.执行命令
// 扫描本地的foo-0.0.1-SNAPSHOT.jar文件,报告文件输出到Desktop目录
$ dependency-check --out ~/Desktop/ --scan ./foo-0.0.1-SNAPSHOT.jar
可直接扫描项目用所有的jar目录(libs),或者生成jar文件(springboot)后进行扫描
3.漏洞数据库
Dependency-Check漏洞检测依赖一些数据库文件,如NVD漏洞数据库,首次使用时,需要花费比较长的时间进行下载(视网络条件等因素),界面参考如下:
其次是 RetireJS
,如果下载报错时,例如作者遇到的
Caused by: org.owasp.dependencycheck.utils.DownloadFailedException: Download failed, unable to copy 'https://raw.githubusercontent.com/Retirejs/retire.js/master/repository/jsrepository.json' to '/opt/homebrew/Cellar/dependency-check/9.1.0/libexec/data/jsrepository.json'; Error downloading file https://raw.githubusercontent.com/Retirejs/retire.js/master/repository/jsrepository.json; unable to connect.
at org.owasp.dependencycheck.utils.Downloader.fetchFile(Downloader.java:152)
at org.owasp.dependencycheck.utils.Downloader.fetchFile(Downloader.java:100)
at org.owasp.dependencycheck.data.update.RetireJSDataSource.initializeRetireJsRepo(RetireJSDataSource.java:150)
... 7 common frames omitted
可手动下载 jsrepository.json
文件然后拷贝到本地 /opt/homebrew/Cellar/dependency-check/9.1.0/libexec/data/jsrepository.json
目录即可(根据实际本地提示进行操作)。
其他操作系统
-
到下载页面 https://github.com/jeremylong/DependencyCheck/releases/ 下载最新版本,如
dependency-check-9.1.0-release.zip
-
解压压缩包
-
找到工具目录,如
bin
为命令行工具目录- Windows系统
> .\bin\dependency-check.bat -h > .\bin\dependency-check.bat --out . --scan [path to jar files to be scanned]
- Unix Like系统
$ ./bin/dependency-check.sh -h $ ./bin/dependency-check.sh --out . --scan [path to jar files to be scanned]
-
工具依赖,漏洞数据库文件,参见上面MacOS命令,大同小异;
通过Maven插件
全局使用
修改 pom.xml 文件,加入dependency-check插件,参考如下:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- dependency-check插件 -->
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>9.1.0</version>
<configuration>
<skipProvidedScope>true</skipProvidedScope>
</configuration>
<executions>
<execution>
<goals>
<goal>check</