对所有使用到 Log4j 组件的项目进行升级,使用最新版本 2.16.0:(以下两个必须同步升级到2.16.0,否则运行会报错)
log4j-core:https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/2.16.0
log4j-api:https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api/2.16.0
其它相关组件,建议也升级:
log4j-slf4j-impl:https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl/2.16.0
log4j-jul:https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-jul/2.16.0
Spring Boot 修复措施
如果是 maven 管理的项目,通过升级 log4j 的版本解决漏洞。
1、使用 Log4j2 的项目,pom.xml 的修改样例如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<!-- 排除旧版本的 Apache Log4j2 组件 -->
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jul</artifactId>
</exclusion>
</exclusions>
<!-- 排除旧版本的 Apache Log4j2 组件 -->
</dependency>
<!-- 引入新版本的 Apache Log4j2 组件 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.16.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.16.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.16.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jul</artifactId>
<version>2.16.0</version>
</dependency>
<!-- 引入新版本的 Apache Log4j2 -->
2、使用 Logback 的项目
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<!-- 排除旧版本的 Apache Log4j2 组件 -->
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
</exclusion>
<!-- 排除旧版本的 Apache Log4j2 组件 -->
</exclusions>
</dependency>
<!-- 引入新版本的 Apache Log4j2 组件 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
<version>2.16.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.16.0</version>
</dependency>
<!-- 引入新版本的 Apache Log4j2 组件 -->