我的 Java 应用程序项目由 Maven 管理。
我的项目有一些库依赖项再次依赖于易受攻击的 Apache commons collection 3.2.1
- 例如Apache 公共(public)配置、速度等
(我可以通过运行 mvn dependency:tree
命令看到它正在被使用。)
我既没有直接使用 Apache commons collection 编写任何代码行,也没有定义它的依赖关系,但它正在被使用。
我该怎么做才能消除它的依赖性并强制使用安全版本 - 3.2.2、4.1。
供您引用: JIRA Bug - Arbitrary remote code execution with InvokerTransformer
这是我的 pom.xml 的一部分,我想没有什么特别的。
...
<dependency>
<groupId>commons-configuration</groupId>
<artifactId>commons-configuration</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
...
最佳答案
除非我遗漏了一些明显的东西,否则只需在您的 POM 中指定依赖项就足够了:
<dependencies>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
<dependency>
...
</dependencies>
如果您将它指定为您的 <dependencies>
的顶部部分,它将覆盖 commons-collections
的任何其他传递包含.
当然,您可能会遇到其他依赖项依赖于其他版本的不兼容性,但这就是单元测试的目的,对吧? ;-)
关于java - 如何从项目的 Maven 依赖树中删除旧的易受攻击的 Apache 公共(public)集合版本依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34671338/