我们使用 OWASP DependencyTrack 来跟踪 Spring Boot 应用程序中的漏洞。
SBOM 是使用 https://github.com/CycloneDX/cyclonedx-gradle-plugin 生成的,并包含嵌入式 Tomcat 服务器的条目,其 PURL 例如
pkg:maven/org.apache.tomcat.embed/[email protected]?type=jar
检查标准数据库 DependencyTrack 未发现仅针对“普通”Tomcat 发布的漏洞(例如 https://nvd.nist.gov/vuln/detail/CVE-2022-42252)。
其他人也面临同样的挑战吗?您有解决方法/解决方案吗?
我不确定可以在哪里应用此解决方案(用于丰富生成的 SBOM 的提示/附加信息?)。
一个更广泛的问题是 - 当包没有在相应的漏洞数据库中被列为易受攻击的包时,为什么 OWASP 检查器会将包标记为易受攻击的包。
这是一个问题,因为 Maven 依赖项检查器必须执行一项相当复杂的任务,以确定项目的哪些依赖项与已发布漏洞的哪些 CPEs 相匹配。
两者的命名模式完全不兼容。
Maven 依赖项检查器在进行此类比较时采用“如有疑问,发出警报”策略。如果你查看生成的报告,你会发现每个匹配都标注有“置信度值”,这表明将 Maven 打包模式与 CPE 命名模式匹配的算法是模糊的,并且没有办法安全地使它是确定性的。
解决这些问题的标准方法是告诉检查人员将 CPE 不适用于您知道不易受攻击的软件包。 其文档中概述了该过程。
在这种特殊情况下,您需要告诉依赖项检查器“嵌入 Tomcat”(实际依赖项)不是 Tomcat(CPE 所说的)
<suppress base="true">
<notes><![CDATA[
Tomcat embed is not tomcat
]]></notes>
<packageUrl regex="true">^pkg:maven/org\.apache\.tomcat\.embed/tomcat-embed.*@.*$</packageUrl>
<cpe>cpe:/a:apache:tomcat</cpe>
</suppress>