Joh*_*pha 7 java security continuous-integration suppression owasp
我的 CI 构建在 OWASP 依赖项检查中失败。例如
[HIGH] CVE-2021-37136 - io.netty:netty-codec-4.1.66.Final
Run Code Online (Sandbox Code Playgroud)
我知道我可以添加抑制来owaspDependencyCheckSuppressions.xml解决这个问题。
这是我以前没有做过的事情,但这里有一个指南 - https://jeremylong.github.io/DependencyCheck/general/suppression.html 上面写着......
“使用 HTML 报告抑制这些误报相当容易。在报告中,每个已识别的 CPE 旁边(以及 CVE 条目上)都有一个抑制按钮。单击抑制按钮将创建一个对话框,您可以简单地按 Control-C复制要放入抑制 XML 文件中的 XML”
我有 2 个问题
#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>
Run Code Online (Sandbox Code Playgroud)
指南接着说
“上面的 XML 文件将抑制任何具有匹配 SHA1 哈希值的文件中的 cpe:/a:apache:struts:2.0.0。”
“任何文件”是什么意思?这是否意味着任何使用依赖关系的 Java 类?
谢谢 :)
以下答案基于 gradle OWASP 插件版本 7.4.4。
下面在我的 build.gradle 中
id "org.owasp.dependencycheck" version "7.4.4"
Run Code Online (Sandbox Code Playgroud)
下面是任务配置
dependencyCheck {
formats = ['xml','json']
failBuildOnCVSS = 8
failOnError = true
suppressionFile = 'config/dependency-check/suppressions.xml'
check.dependsOn(dependencyCheckAnalyze)
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我们提供了抑制文件的路径,我们可以在其中定义漏洞的抑制。
所以,就我而言,我们的声纳构建失败是由于
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
Run Code Online (Sandbox Code Playgroud)
因此,我已将它们添加到 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>
Run Code Online (Sandbox Code Playgroud)
我建议使用,until="2023-06-01Z"这样你就不会永远压制它们。
可以通过多种不同的组合来抑制漏洞。因此,请参考https://jeremylong.github.io/DependencyCheck/general/suppression.html并决定哪个选项适合您的要求。
| 归档时间: |
|
| 查看次数: |
17076 次 |
| 最近记录: |