java OWASP依赖项检查,如何使用抑制

wdebmtf2  于 2023-03-16  发布在  Java
关注(0)|答案(2)|浏览(186)

我有一个内置CI在OWASP依赖项检查时失败。

[HIGH] CVE-2021-37136 - io.netty:netty-codec-4.1.66.Final

我知道我可以在owaspDependencyCheckSuppressions.xml中添加一个抑制来解决这个问题。
这是我以前没有做过的事情,但这里有一个指南-https://jeremylong.github.io/DependencyCheck/general/suppression.html,它说...
“使用HTML报告可以很容易地抑制这些误报。在报告中,每个识别的CPE旁边(以及CVE条目上)都有一个抑制按钮。单击抑制按钮将创建一个对话框,您只需按Control-C即可复制要放入抑制XML文件中的XML。”
我有两个问题

1你知道我在哪里可以找到这个HTML报告吗?我想它可能在CI中链接(我使用的是Circle CI),但我在那里找不到它:(

2指南中给出了抑制示例

<?xml version="1.0" encoding="UTF-8"?>
<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd">
   <suppress>
      <notes><![CDATA[
      file name: some.jar
      ]]></notes>
      <sha1>66734244CE86857018B023A8C56AE0635C56B6A1</sha1>
      <cpe>cpe:/a:apache:struts:2.0.0</cpe>
   </suppress>
</suppressions>

导游接着说
“上述XML文件将从具有匹配SHA1哈希的任何文件中抑制cpe:/a:apache:struts:2.0.0。”
什么是“任意文件”?这是否意味着任何使用依赖关系的Java类?
谢谢:)

sycxhyv7

sycxhyv71#

1单击CI中OWASP依赖性检查任务上的“artifacts”选项卡,就会出现html报告。

2“文件”在这里指的是jar中的文件,它会在html报告中提供给你。

ars1skjm

ars1skjm2#

以下答案基于Gradle OWASP插件版本7.4.4。
在我的建筑下面。gradle

id "org.owasp.dependencycheck" version "7.4.4"

下面是任务配置

dependencyCheck {
    formats = ['xml','json']
    failBuildOnCVSS = 8
    failOnError = true
    suppressionFile = 'config/dependency-check/suppressions.xml'
    check.dependsOn(dependencyCheckAnalyze)
}

如您所见,我们提供了suppressionFile的路径,我们可以在其中定义漏洞的抑制。
所以,在我的例子中,我们的声纳构建失败是由于

Filename: spring-security-oauth2-client-5.6.3.jar | Reference: CVE-2022-22978 | CVSS Score: 9.8

Filename: snakeyaml-1.33.jar | Reference: CVE-2022-1471 | CVSS Score: 9.8

因此,我将它们添加到Suppression.xml中,文件如下所示

<?xml version="1.0" encoding="UTF-8"?>
<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd">
    <suppress until="2023-06-01Z">
        <notes><![CDATA[
        This suppresses a CVE from SnakeYaml as it needs to wait until SpringBoot 3 upgrade
        ]]></notes>
        <packageUrl regex="true">^pkg:maven/org\.yaml/snakeyaml@.*$</packageUrl>
        <vulnerabilityName>CVE-2022-1471</vulnerabilityName>
    </suppress>
    <suppress until="2023-06-01Z">
        <notes><![CDATA[
        This suppresses a CVE from OAuth Client as it needs to wait until SpringBoot 3 upgrade
        ]]></notes>
        <packageUrl regex="true">^pkg:maven/org\.springframework\.security/spring\-security\-oauth2\-client@.*$</packageUrl>
        <vulnerabilityName>CVE-2022-22978</vulnerabilityName>
    </suppress>
</suppressions>

我建议使用until="2023-06-01Z",这样就不会永远抑制它们。
漏洞可以通过多种不同的组合来抑制。因此,请参考https://jeremylong.github.io/DependencyCheck/general/suppression.html并确定哪个选项适合您的要求。

相关问题