当Log4j被用作可传递依赖项时,是否有任何方法可以修复该漏洞

vdgimpew  于 2022-11-06  发布在  其他
关注(0)|答案(3)|浏览(151)

我的项目对log4j v1.2.16有一个可传递的依赖关系,通过org.mobicents.servlet.sip包在我的项目中作为直接依赖关系使用。
但是org.mobicents.servlet.sip不再被积极开发。
除了等待org.mobicents.servlet.sip修复此问题之外,是否还有其他方法可以修复此漏洞?

p4tfgftt

p4tfgftt1#

您可能需要使用log4j-1.2-api bridge
1.排除对log4j 1.x的依赖性(注意不同的groupid,它在1.x和2.x之间发生了变化)

<dependencies>
  <dependency>
    <groupId>org.mobicents.servlet.sip</groupId>
    <artifactId>sip-servlets-spec</artifactId>
    <exclusions>
      <exclusion>
        <groupId>log4j</groupId><artifactId>log4j</artifactId>
      </exclusion>
    </exclusions>
  </dependency>

1.使用桥接器添加对log4j 2.17.1的依赖性

<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.17.1</version></dependency>
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-1.2-api</artifactId><version>2.17.1</version></dependency>
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.17.1</version></dependency>
zmeyuzjn

zmeyuzjn2#

如果您使用Maven作为构建工具,那么您可以采用以下方法:
1.排除传递依赖关系,并
1.使其成为指定最新版本的直接依赖项。

<dependencies>
    <dependency>
    <groupId>org.mobicents.servlet.sip</groupId>
    <artifactId>sip-servlets-spec</artifactId>
    <version>4.0.128</version>
        <exclusions>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.17.1</version>
    </dependency>
</dependencies>

您还可以参考maven文档以获得详细说明。

eivnm1vs

eivnm1vs3#

最终的解决方案是分解log4j-1.2.17.jar,删除受影响的类SocketServer.classJMSAppender.class,创建一个自定义jar并使用它。
用于分解和创建新jar的命令取自堆栈溢出回答
参考:https://stackoverflow.com/a/16806235/8864570

相关问题