如何从项目的maven依赖关系树中删除旧的易受攻击的Apache commons集合版本依赖关系?

hpcdzsge  于 2023-06-05  发布在  Maven
关注(0)|答案(3)|浏览(310)

我的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>
...
wwwo4jvm

wwwo4jvm1#

除非我遗漏了一些明显的东西,否则在POM中指定依赖关系就足够了:

<dependencies>
  <dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>3.2.2</version>
  </dependency>
  ...
</dependencies>

如果您将其指定在<dependencies>节的top,它将覆盖commons-collections的任何其他传递包含。
当然,您可能会遇到其他依赖项依赖于其他版本的不兼容性,但这就是单元测试的目的,对吗?;-)

6yt4nkrj

6yt4nkrj2#

您需要做的是从受影响的依赖项中排除commons-collections,并直接在依赖项中包含所需的版本。
示例pom.xml摘录假设commons-configuration使用易受攻击的commons-collections

<dependency>
        <groupId>commons-configuration</groupId>
        <artifactId>commons-configuration</artifactId>
        <version>1.10</version>
        <exclusions>
            <exclusion>
                <artifactId>commons-collections</artifactId>
                <groupId>commons-collections</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>3.2.2</version>
        <scope>runtime</scope>
    </dependency>

为了简单起见,我没有在dependency-management一节中展示在根pom.xml中的配置。
<scope>应该设置为runtime,因为您提到不直接使用库。

yfjy0ee7

yfjy0ee73#

我已经在我的pom.xml中添加了这些行,但仍然是公共的-collections3.2正在下载。

<dependencies>
    <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.1</version>
    </dependency>
    <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>${apachecommonslang.version}</version>
    <exclusions>
    <exclusion>
    <artifactId>commons-collections</artifactId>
    <groupId>commons-collections</groupId>
    </exclusion>
    </exclusions>
    </dependency>
    <dependency>
    <groupId>commons-dbcp</groupId>
    <artifactId>commons-dbcp</artifactId>
    <version>${dbcp.version}</version>
    <exclusions>
    <exclusion>
    <artifactId>commons-collections</artifactId>
    <groupId>commons-collections</groupId>
    </exclusion>
    </exclusions>
    </dependency>

相关问题