Fortify抱怨Maven的pom.xml外部模式

时间:2017-06-13 23:23:33

标签: java maven fortify

基于Fortify(HP的静态代码分析器)报告,显然以下 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 http://maven.apache.org/maven-v4_0_0.xsd">
...

由于

  

构建配置错误:外部Maven依赖存储库:此maven构建脚本依赖于外部源,这可能允许攻击者将恶意代码插入最终产品或控制构建计算机。 / p>

这有点假阳性检测,但根据我公司的偏执安全政策,我无法抑制这一点。所以现在pom.xml看起来像这样:

<project>
...

它仍然正确构建/编译。 IDE仍将文件识别为有效的Maven项目对象模型文件。没有发生什么坏事。

我想知道是否有任何可能的情况,这种修改可能会导致一些实际问题?例如,某些已知工具或解析器不会将其识别为有效的Maven项目文件。感谢。

2 个答案:

答案 0 :(得分:1)

深入研究这个问题,事实证明Fortify在Maven Schema上没有抱怨。它抱怨您正在使用外部Maven存储库(中央,jboss等),并且您的POM没有适当的位置标记此问题(即,您在POM中没有定义任何存储库)。

强化said

在Maven下,开发人员没有列出从中检索依赖关系的显式URL,而是指定了依赖关系名称和版本,并且Maven依靠其基础配置来标识从中检索依赖关系的服务器。对于常用组件,这使开发人员不必研究依赖位置。

两种不同的攻击情形会影响这些系统:攻击者可能会破坏托管依赖项的服务器,也可能破坏构建机器用来将托管依赖项的服务器的主机名请求重定向到由攻击者控制的机器的DNS服务器

之所以收到此漏洞,是因为您使用的是外部存储库,攻击者有机会通过注入被篡改的依赖项来破坏系统。通过显式声明内部存储库,(从理论上)您的依赖项将受到基础结构的保护。

如果您有内部存储库,则类似以下内容可能有助于解决问题:

<repositories>
  <repository>
    <id>central</id>
    <url>http://172.28.60.140/repository/maven-public</url>
  </repository>
  <repository>
    <id>corp-internal</id>
    <url>http://172.28.60.140/repository/maven-private</url>
  </repository>
</repositories>

当心存储库ID central,这是必要的,因为所有POM都是从超级POM继承的。通过覆盖它,可以将默认的中央存储库替换为内部的中央存储库。


删除schemaLocation使Fortify无法将此xml识别为POM,因此无法确定风险。它不会解决任何问题,只能将其隐藏。

答案 1 :(得分:0)

我认为他们没有解决记录的issue,因为我没有看到任何提交。 对我来说,即使我已经删除&lt;项目&gt;标签,它仍然抱怨问题中提到的同一问题。 注意:我使用的是版本6.21.0005,使用审计工作台,Fortify静态代码分析器软件。