1

我的项目通过我项目中使用的org.mobicents.servlet.sip包作为直接依赖项对 log4j v1.2.16 具有传递依赖关系。

但是org.mobicents.servlet.sip不再积极开发。

除了等待org.mobicents.servlet.sip来修复这个问题之外,还有什么方法可以修复这个漏洞。

4

3 回答 3

1

您可能想要使用log4j-1.2-api 网桥。去做这个

  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>
于 2022-01-19T12:01:32.640 回答
0

如果您使用 Maven 作为构建工具,那么您可以做的一种方法是:

  1. 排除传递依赖和
  2. 使其成为指定最新版本的直接依赖项。

<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 文档以获得详细说明。

于 2022-01-18T16:57:08.620 回答
0

最终的解决方案是分解 log4j-1.2.17.jar,删除受影响的类SocketServer.classJMSAppender.class,创建一个自定义 jar 并使用它。

用于爆炸和创建新 jar 的命令取自以下 stackoverflow 答案

参考:https ://stackoverflow.com/a/16806235/8864570

于 2022-02-04T13:45:35.620 回答