# CVE漏洞扫描插件

#### 一、原理说明

有一帮用爱发电的人，对已知的组件的存在的安全漏洞做了一个共享数据库，这个插件可以对依赖的版本进行扫描，看你的组件有没有不合规的版本。

你如果高兴，可以配置mvn编译脚本先进行依赖检测，**对于级别高于7的漏洞未修复不允许编译**


---
---

#### 二、使用CLI方式

CLI帮助：<https://dependency-check.github.io/DependencyCheck/dependency-check-cli/index.html>

CLI参数说明：<https://dependency-check.github.io/DependencyCheck/dependency-check-cli/arguments.html>

**扫描之前需要先编译打包：mvn clean install**




```shell

# 下载cli版本

https://github.com/dependency-check/DependencyCheck/releases/

# 更新漏洞库
dependency-check --updateonly --nvdDatafeed https://nvdcve.iovhm.com --retireJsUrl http://nvdcve.iovhm.com/jsrepository.json

# 扫描
dependency-check --noupdate --failOnCVSS 7 --scan "D:\vpclub\park-baiyun\baiyun-back\**\*.jar"

# 如果加入过环境变量，可以进入到项目文件夹执行
# --noupdate 不更新数据库
# --failOnCVSS 7 只扫描高位漏洞
# --format CSV ,默认输出为html,很卡，可以输出为csv
dependency-check --noupdate --failOnCVSS 7 --scan  ./target/*.jar --format CSV

# 输出为csv格式时，主要查看 CVSSv3_BaseScore 列，筛选7和以上的优先修复。或者查看CVSSv3_BaseSeverity 列，优先修复高(HIGH)和严重(CRITICAL)

```

**每次都需要进入到bin目录执行和要复制全路径太麻烦，可以将dependency-check加入到环境变量的path**

[![](https://iovhm.com/book/uploads/images/gallery/2025-07/scaled-1680-/4nMGsb9unOTtZnUd-image-1752755976065.png)](https://iovhm.com/book/uploads/images/gallery/2025-07/4nMGsb9unOTtZnUd-image-1752755976065.png)

---

##### 不支持JAVA 8

如果你的项目是java 8 或者当前默认环境设置为了java 8， 执行dependency-check提示版本不对 ，需要修改dependency-check.bat 里面使用的java版本

[![](https://iovhm.com/book/uploads/images/gallery/2025-07/scaled-1680-/AdNiOq9paVpq5ToR-image-1752758342468.png)](https://iovhm.com/book/uploads/images/gallery/2025-07/AdNiOq9paVpq5ToR-image-1752758342468.png)






---
---

#### 三、使用mvn插件方式


> 小技巧：设置了插件方式后不能编译了怎么办，可以把**failBuildOnCVSS设置为11**，可以编译，同时也生成报告


插件名称：**dependency-check-maven**

maven 中心仓库最新版本发布页：<https://central.sonatype.com/artifact/org.owasp/dependency-check-maven>

maven 插件方式帮助：<https://dependency-check.github.io/DependencyCheck/dependency-check-maven/>



**maven 版本要求：3.8和以上**

**JDK 8 支持的最高版本为10.0.3，但是无法支持2023以后的漏洞数据库，直接报错。只能使用CLI方式**

#####  配置mvn项目

```xml

    <build>
        <plugins>
            <plugin>
                <groupId>org.owasp</groupId>
                <artifactId>dependency-check-maven</artifactId>
                <version>12.1.3</version>
                <configuration>
                    <!-- 使用美国国家中心的数据库需要的秘钥，如果配置了镜像可以不需要-->
                    <nvdApiKey>your_key</nvdApiKey>
                    <!-- 手动更新漏洞数据库 -->
                    <autoUpdate>false</autoUpdate>
                    <!-- nvdcve 漏洞库镜像地址 -->
                    <nvdDatafeedUrl>https://nvdcve.iovhm.com</nvdDatafeedUrl>
                    <!-- retire.js 漏洞库镜像地址 -->
                    <retireJsUrl>http://nvdcve.iovhm.com/jsrepository.json</retireJsUrl>
                    <!-- 只扫描风险评分大于等于这个数值的，既高危漏洞 -->
                    <failBuildOnCVSS>7</failBuildOnCVSS>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>check</goal>
                            <goal>update-only</goal>
                            <goal>aggregate</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

```

##### 执行依赖CVE检测

```sehll

# 升级漏洞库
mvn dependency-check:update-only

# 对 整个多模块项目（含所有子模块） 执行聚合依赖扫描。递归扫描所有子模块的依赖，合并为一个统一报告。多模块项目，想一次性检查所有模块的依赖。
mvn dependency-check:aggregate

# 对 当前 Maven 模块 执行依赖漏洞扫描，	只扫描当前模块的依赖（不会递归子模块），单模块项目，或你只想检查某个模块
mvn dependency-check:check

```

也可以在可视化区域执行

[![](https://iovhm.com/book/uploads/images/gallery/2025-07/scaled-1680-/obETKdvG7PAAHgAb-image-1752731509409.png)](https://iovhm.com/book/uploads/images/gallery/2025-07/obETKdvG7PAAHgAb-image-1752731509409.png)


##### 获取扫描报告


[![](https://iovhm.com/book/uploads/images/gallery/2025-07/scaled-1680-/Zy4bLShDnURlmXzM-image-1752731545865.png)](https://iovhm.com/book/uploads/images/gallery/2025-07/Zy4bLShDnURlmXzM-image-1752731545865.png)



##### 查看扫描报告

我这个项目啥也没有，就检查出这么多问题


[![](https://iovhm.com/book/uploads/images/gallery/2025-07/scaled-1680-/bVcb6ye3rq9b1h2A-image-1752732293749.png)](https://iovhm.com/book/uploads/images/gallery/2025-07/bVcb6ye3rq9b1h2A-image-1752732293749.png)


---
---

#### 四、漏洞库代理


在没有修改配置的情况下，插件使用美国国家数据库，很慢、半个小时都搞不完，这个时候你需要一个漏洞数据库镜像。


如果你不具备自己搭建漏洞镜像数据库的条件，可以到美国国家数据库申请一个key，会稍微快点，但是还是很慢。


美国国家数据库API_KEY申请（这个KEY在搭建镜像数据库的时候也会用到，记得保存好）：<https://nvd.nist.gov/developers/request-an-api-key>

帮助文档：<https://dependency-check.github.io/DependencyCheck/data/mirrornvd.html>

帮助文档：<https://github.com/jeremylong/open-vulnerability-cli>


```yaml


version: "3"
services:
  open-vulnerability-cli:
    image: harbor.iovhm.com/hub/jeremylong/open-vulnerability-data-mirror:v9.0.0
    container_name: open-vulnerability-cli
    restart: always
    privileged: true
    ports:
      - 8089:80
    environment:
      - TZ=Asia/Shanghai
      - NVD_API_KEY=<your_key>    # 使用美国国家中心的数据库需要的秘钥
    volumes:
      - ./cache:/usr/local/apache2/htdocs

# 进入到容器
# docker exec -it open-vulnerability-cli /bin/bash

# 对漏洞数据集进行镜像下载，建议每七天定期执行
# /mirror.sh       

# 下载 jsrepository.json ，因为我懒得再去搭建一个服务，我直接在镜像的挂在目录./cache执行了
# wget https://raw.githubusercontent.com/Retirejs/retire.js/master/repository/jsrepository.json

```

#####  配置mvn项目

```xml

                <configuration>
                    <!-- 使用美国国家中心的数据库需要的秘钥，如果配置了镜像可以不需要-->
                    <nvdApiKey>your_key</nvdApiKey>
                    <!-- 手动更新漏洞数据库 -->
                    <autoUpdate>false</autoUpdate>
                    <!-- nvdcve 漏洞库镜像地址 -->
                    <nvdDatafeedUrl>https://nvdcve.iovhm.com</nvdDatafeedUrl>
                    <!-- retire.js 漏洞库镜像地址 -->
                    <retireJsUrl>http://nvdcve.iovhm.com/jsrepository.json</retireJsUrl>
                    <!-- 只扫描风险评分大于等于这个数值的，既高危漏洞 -->
                    <failBuildOnCVSS>7</failBuildOnCVSS>
                </configuration>

```



#### 六、更多工具

<https://sonatype.github.io/ossindex-maven/maven-plugin/>

```shell

mvn org.sonatype.ossindex.maven:ossindex-maven-plugin:audit -f pom.xml

mvn org.sonatype.ossindex.maven:ossindex-maven-plugin:audit-aggregate -f pom.xml

```