我的Java应用程序项目由Maven管理。
我的项目有一些库依赖性,再次依赖于Apache commons collection 3.2.1
,这是脆弱的-例如。Apache公共配置、速度等
(我可以看到它正在通过运行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>
...
3条答案
按热度按时间wwwo4jvm1#
除非我遗漏了一些明显的东西,否则在POM中指定依赖关系就足够了:
如果您将其指定在
<dependencies>
节的top,它将覆盖commons-collections
的任何其他传递包含。当然,您可能会遇到其他依赖项依赖于其他版本的不兼容性,但这就是单元测试的目的,对吗?;-)
6yt4nkrj2#
您需要做的是从受影响的依赖项中排除
commons-collections
,并直接在依赖项中包含所需的版本。示例
pom.xml
摘录假设commons-configuration
使用易受攻击的commons-collections
为了简单起见,我没有在
dependency-management
一节中展示在根pom.xml
中的配置。<scope>
应该设置为runtime
,因为您提到不直接使用库。yfjy0ee73#
我已经在我的
pom.xml
中添加了这些行,但仍然是公共的-collections3.2
正在下载。