Log4j2是一款优秀的java日志框架,被大量用于业务开发,可能项目本身没有直接使用,但是引用的依赖包中仍然可能用到。只要用户输入的数据会被日志记录,就可被成功攻击。

影响范围Apache Log4j 2.x <= 2.15.1-rc1。

只影响到log4j2,并不影响log4j,如果你是log4j则不用担心。

Log4j和Log4j2的区别:
log4j只需要引入一个jar包即可,

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

而log4j 2则是需要2个核心:

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.5</version>
</dependency>

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.5</version>
</dependency>

我查看了一下我们的项目依赖图:
下面是如何用IDEA查看类之间的继承关系

选中你要查看的某个类或者接口,右键出现如下选项,按图操作:

log4j2高危漏洞,排除log4j2依赖。_安全

log4j2高危漏洞,排除log4j2依赖。_spring boot_02


这个是第三方依赖内部引入了 log4j2 的两个核心包2.11.1的版本,看来我这里也有漏洞。

如果是加急处理 先找到父级依赖,先把这两个包排除掉就行了。
找到要排除Jar的和,使用exclusion排除。

<!-- spring security 安全认证 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<exclusions>

<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>

<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
</exclusion>

</exclusions>
</dependency>