dependency-check-maven - 抑制不起作用
dependency-check-maven - suppression not working
我正在尝试将某些已确认风险的库列入白名单 - 理想情况下,我想从 pom.xml
本身内部执行此操作,但看起来这是不可能的。
我创建了一个简单的项目,其依赖项 (H2) 具有突出的 CVE,并且 dependency-check-maven
配置了 suppressions
文件以忽略该依赖项,使用 XML 从 Dependency-Check-Report
生成
pom.xml
:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.me</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>6.5.3</version>
<configuration>
<suppressionFile>path\to\owasp-suppressions.xml</suppressionFile>
<failBuildOnCVSS>8</failBuildOnCVSS>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
</dependency>
</dependencies>
</project>
owasp-suppressions.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd">
<suppress>
<notes><![CDATA[
file name: h2-1.4.200.jar
]]></notes>
<packageUrl regex="true">^pkg:maven/com\.h2database/h2@.*$</packageUrl>
<cpe>cpe:/a:h2database:h2</cpe>
</suppress>
</suppressions>
但尽管如此,构建仍然失败:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.703 s
[INFO] Finished at: 2022-01-12T14:26:58Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.owasp:dependency-check-maven:6.5.3:check (default) on project test:
[ERROR]
[ERROR] One or more dependencies were identified with vulnerabilities that have a CVSS score greater than or equal to '8.0':
[ERROR]
[ERROR] h2-1.4.200.jar: CVE-2021-23463
谁能告诉我做错了什么?
我在我的机器上验证了。当我 运行 你的代码确实失败了。然后我使用 html 输出和“抑制”代码生成器。但是,它为我生成的代码与您提供的代码略有不同。使用该代码,它可以正常工作。
所以也许是一个累人的复制粘贴然后编辑和弄乱它的情况?
但是,这对我有用:
<suppress>
<notes>
<![CDATA[
file name: h2-1.4.200.jar
]]>
</notes>
<packageUrl regex="true">^pkg:maven/com\.h2database/h2@.*$</packageUrl>
<vulnerabilityName>CVE-2021-23463</vulnerabilityName>
</suppress>
正在查看您的评论。我调查了一下。
没有压制给了我2个标识符:
- pkg:maven/com.h2database/h2@1.4.200(置信度:高)
- cpe:2.3:a:h2数据库:h2:1.4.200:::::::*(置信度:最高)
然后像您的示例中那样通过 cpe 进行抑制,将其缩小并仅显示:
- pkg:maven/com.h2database/h2@1.4.200(置信度:高)
那个没有“压制生成按钮”。我试过sha,和filePath,结果发现不能和cpe结合。它无法解析 xml.
但是我们可以将漏洞抑制与文件路径结合起来,这样您仍然可以只抑制您想要的特定 jar。也许甚至更好:抑制特定 jar 中的特定 CVE。
像这样:
<suppress>
<notes>
<![CDATA[
file name: h2-1.4.200.jar
]]>
</notes>
<filePath regex="true">.*\/h2database.*\.jar</filePath>
<vulnerabilityName>CVE-2021-23463</vulnerabilityName>
</suppress>
注意我也删除了 packageUrl 标签,显然这两者都没有结合。
我正在尝试将某些已确认风险的库列入白名单 - 理想情况下,我想从 pom.xml
本身内部执行此操作,但看起来这是不可能的。
我创建了一个简单的项目,其依赖项 (H2) 具有突出的 CVE,并且 dependency-check-maven
配置了 suppressions
文件以忽略该依赖项,使用 XML 从 Dependency-Check-Report
pom.xml
:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.me</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>6.5.3</version>
<configuration>
<suppressionFile>path\to\owasp-suppressions.xml</suppressionFile>
<failBuildOnCVSS>8</failBuildOnCVSS>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
</dependency>
</dependencies>
</project>
owasp-suppressions.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd">
<suppress>
<notes><![CDATA[
file name: h2-1.4.200.jar
]]></notes>
<packageUrl regex="true">^pkg:maven/com\.h2database/h2@.*$</packageUrl>
<cpe>cpe:/a:h2database:h2</cpe>
</suppress>
</suppressions>
但尽管如此,构建仍然失败:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.703 s
[INFO] Finished at: 2022-01-12T14:26:58Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.owasp:dependency-check-maven:6.5.3:check (default) on project test:
[ERROR]
[ERROR] One or more dependencies were identified with vulnerabilities that have a CVSS score greater than or equal to '8.0':
[ERROR]
[ERROR] h2-1.4.200.jar: CVE-2021-23463
谁能告诉我做错了什么?
我在我的机器上验证了。当我 运行 你的代码确实失败了。然后我使用 html 输出和“抑制”代码生成器。但是,它为我生成的代码与您提供的代码略有不同。使用该代码,它可以正常工作。 所以也许是一个累人的复制粘贴然后编辑和弄乱它的情况?
但是,这对我有用:
<suppress>
<notes>
<![CDATA[
file name: h2-1.4.200.jar
]]>
</notes>
<packageUrl regex="true">^pkg:maven/com\.h2database/h2@.*$</packageUrl>
<vulnerabilityName>CVE-2021-23463</vulnerabilityName>
</suppress>
正在查看您的评论。我调查了一下。 没有压制给了我2个标识符:
- pkg:maven/com.h2database/h2@1.4.200(置信度:高)
- cpe:2.3:a:h2数据库:h2:1.4.200:::::::*(置信度:最高)
然后像您的示例中那样通过 cpe 进行抑制,将其缩小并仅显示:
- pkg:maven/com.h2database/h2@1.4.200(置信度:高)
那个没有“压制生成按钮”。我试过sha,和filePath,结果发现不能和cpe结合。它无法解析 xml.
但是我们可以将漏洞抑制与文件路径结合起来,这样您仍然可以只抑制您想要的特定 jar。也许甚至更好:抑制特定 jar 中的特定 CVE。 像这样:
<suppress>
<notes>
<![CDATA[
file name: h2-1.4.200.jar
]]>
</notes>
<filePath regex="true">.*\/h2database.*\.jar</filePath>
<vulnerabilityName>CVE-2021-23463</vulnerabilityName>
</suppress>
注意我也删除了 packageUrl 标签,显然这两者都没有结合。