OWASP第三方依赖检查插件使用

什么是OWASP

OWASP(开放Web软体安全项目- Open Web Application Security Project) 是一个开源的、非盈利的全球性安全组织,致力于应用软件的安全研究。
其使命是使应用软件更加安全,使企业和组织能够对应用安全风险作出更清晰的决策。
目前OWASP全球拥有130个分会近万名会员,共同推动了安全标准、安全测试工具、安全指导手册等应用安全技术的发展。

OWASP Dependency Check 简介

Dependency-Check 是其旗下出品的一个第三方依赖检查工具,可以检查项目依赖包存在的已知、公开披露的漏洞。
目前良好的支持Java和.NET;Ruby、Node.js、Python处于实验阶段;仅支持通过(autoconf and cmake)编译的C/C++。
针对OWASP Top 10 2017 A9-Using Components with Known Vulnerabilities提供部分解决方案。

OWASP Dependency Check的使用
  • dependency-check-maven

使用方式有多种,可直接在maven/gradle/ant集成使用,可单独作为命令行工具使用,也可集成在jenkins/sonarqube中使用。
这里采用集成在maven中作为示例。更多使用方法可在文末github链接中找到。

pom文件添加如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<project>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>5.0.0-M2</version>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
...
</build>
...
</project>

默认情况下,check操作绑定在 mvn verify和site的生命周期中。

这里使用 mvn verify来进行检查。

在下载完依赖后,插件会去下载NVD CVE列表然后进行检查,因为网络原因,这一操作非常缓慢。

slow

  • NIST Data Mirror

因为直接拉取NVD CVE文件非常慢,所以想法是先使用其他方法下载到本地,然后再让dependency check使用本地镜像。

NIST Data Mirror工具可以来实现这个过程。

git clone 工具,然后 mvn clean package 打包,在target目录下执行 java -jar nist-data-mirror.jar 开始下载。

nist

下载完毕后,修改配置路径为本地

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<project>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>5.0.0-M2</version>
<configuration>
<cveUrl12Modified>mirror-directory/nvdcve-Modified.xml.gz</cveUrl12Modified>
<cveUrl20Modified>mirror-directory/nvdcve-2.0-Modified.xml.gz</cveUrl20Modified>
<cveUrl12Base>mirror-directory/nvdcve-%d.xml</cveUrl12Base>
<cveUrl20Base>mirror-directory/nvdcve-2.0-%d.xml</cveUrl20Base>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
...
</build>
...
</project>

在执行 mvn verify,一小会便结束。

需要注意的是,需要定期去更新这些文件以便保持最新。

  • 查看结果

默认情况下会在 target 文件夹下生成 dependency-check-report.html。

打开该报告,其中会列出有问题的依赖组件,并在后文附上该组件包含哪些漏洞。

report

report-cve


参考