前言
公司客户使用的是该工具扫描,与我们内部使用的工具snyk的测试结果无法对齐,为了便于和客户扫描对齐也采用该工具扫描本公司的产品。本文主要记录一下工具原理简介、使用方式、报告解读及与其他工具对比等内容。本文内容来源于网络也服务于网络,起主要目的是把自己使用的一些心得体会记录一下便于自己日后使用,也能够为他人提供一点有效参考。
工具简介
- Dependency-Check 是OWASP(Open WebApplication Security Project) g的一个实用开源程序,用于识别项目依赖项并检查是否存在任何已知的,公开披露的漏洞;
- Dependency-Check 常用于扫描java和.NET程序,相对比较准确;
- Dependency-Check还可用户python、ruby、php以及nodejs等程序的扫描,这些作为实验性研究因为有较高的高误报率。
工具原理
过程
-
Dependency-Check工作的方式是通过分析器对文件进行扫描搜集信息,搜集到的信息被叫做迹象。 -
共搜集3种迹象,分时是vendor(供应商),product(产品)和version(版本)。例如,jarAnalyzer将从jar文件包中的Mainfest、pom.xml和包名进行信息搜集,然后把各种搜集到的源放到一个或者多个迹象表里。 -
通过搜集到的迹象和CPE条目(NVD、CVE数据索引)进行匹配,分析器匹配到了就会给个标志发送到报告。 -
Dependency-Check 目前不使用hash识别文件,因为第三方依赖从源码中的hash值构建通常不会匹配官方发布版本的hash。后续版本中可能会增加一些hash来匹配一些常用的第三方库,例如Spring, Struts等。
NVD
- Dependency-Check依赖NVD漏洞数据库(美国国家通用漏洞数据库)进行依赖漏洞检查
- 全球信息安全领域著名的漏洞数据库包括中国国家信息安全漏洞库,美国国家信息安全漏洞库NVD,赛门铁克漏洞库等等
- NVD的更新频率是出现问题实时更新
- NVD官网及其实时漏洞看板
CVSS
- NVD评级依赖CVSS(CommonVulnerability Scoring System),即“通用漏洞评分系统”,是一个“行业公开标准,其被设计用来评测漏洞的严重程度,并帮助确定所需反应的紧急度和重要度”;
- CVSS是安全内容自动化协议(SCAP)的一部分,通常CVSS同CVE一同由美国国家漏洞库(NVD)发布并保持数据的更新
- CVSS官网:https://www.first.org/
- 目前主要参考cvss v3.0,具体标准如下所示:
Severity | Base Score Range |
---|
Critical | 9.0~10.0 | High | 7.0~8.9 | Medium | 4.0~6.9 | Low | 0.1~3.9 | None | 0.0 |
工具安装
工具地址
- https://github.com/jeremylong/DependencyCheck
前置依赖
- 安装依赖
- Java: java -version 1.8 - Maven: mvn -version 3.5.0 and higher - 测试依赖
- dotnet core version 6.0 - Go: go version 1.12 and higher - Ruby bundler-audit - Yarn - pnpm
安装方式
Jenkins Plugin
Command Line
- More detailed instructions can be found on the dependency-check github pages. The latest CLI can be downloaded from github in the releases section.
On *nix
$ ./bin/dependency-check.sh -h
$ ./bin/dependency-check.sh --out . --scan [path to jar files to be scanned]
On Windows
> .\bin\dependency-check.bat -h
> .\bin\dependency-check.bat --out . --scan [path to jar files to be scanned]
On Mac
- with Homebrew Note - homebrew users upgrading from 5.x to 6.0.0 will need to run dependency-check.sh --purge.
$ brew update && brew install dependency-check
$ dependency-check -h
$ dependency-check --out . --scan [path to jar files to be scanned]
Maven Plugin
More detailed instructions can be found on the dependency-check-maven github pages. By default, the plugin is tied to the verify phase (i.e. mvn verify). Alternatively, one can directly invoke the plugin via mvn org.owasp:dependency-check-maven:check.
The dependency-check plugin can be configured using the following:
<project>
<build>
<plugins>
...
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
...
</build>
...
</project>
Ant Task
For instructions on the use of the Ant Task, please see the dependency-check-ant github page.
使用过程
报告解读
工具对比
参考
- https://blog.csdn.net/liwenxiang629/article/details/109453335
- https://github.com/jeremylong/DependencyCheck
- https://blog.csdn.net/m0_37268841/article/details/109066786
|