当它被用作传递依赖时,有什么方法可以修复 Log4j 漏洞
Are there any ways to fix Log4j vulnerability when it is being used as a transitive dependency
我的项目通过 org.mobicents.servlet.sip 包在我的项目中作为直接依赖项对 log4j v1.2.16 具有传递依赖性。
但是org.mobicents.servlet.sip不再积极开发。
除了等待 org.mobicents.servlet.sip 修复此问题之外,是否有任何修复此漏洞的选项。
如果您使用 Maven 作为构建工具,那么您可以采用的一种方法是:
- 排除传递依赖并且
- 使其成为指定最新版本的直接依赖项。
<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 docs
您可能想要使用 log4j-1.2-api bridge。为此
- 排除对 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>
- 使用 bridge
添加对 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>
最终解决方案是分解 log4j-1.2。17.jar,删除受影响的 类 SocketServer.class
和 JMSAppender.class
,创建一个自定义 jar 并使用它。
用于展开和创建新 jar 的命令取自下面的 Whosebug 答案
参考:
我的项目通过 org.mobicents.servlet.sip 包在我的项目中作为直接依赖项对 log4j v1.2.16 具有传递依赖性。
但是org.mobicents.servlet.sip不再积极开发。
除了等待 org.mobicents.servlet.sip 修复此问题之外,是否有任何修复此漏洞的选项。
如果您使用 Maven 作为构建工具,那么您可以采用的一种方法是:
- 排除传递依赖并且
- 使其成为指定最新版本的直接依赖项。
<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 docs
您可能想要使用 log4j-1.2-api bridge。为此
- 排除对 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>
- 使用 bridge 添加对 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>
最终解决方案是分解 log4j-1.2。17.jar,删除受影响的 类 SocketServer.class
和 JMSAppender.class
,创建一个自定义 jar 并使用它。
用于展开和创建新 jar 的命令取自下面的 Whosebug 答案
参考: