修复log4j的漏洞

背景现状解决方案

背景

由于项目要接入公网,故需要在接入公网前对引入log4j的项目进行安全漏洞测试。结果检测出log4 j日志版本太低。要求将logj的版本升级到2.17.1

现状

1.现在引入的是spring-boot-starter-log4j2,而这个组件是依赖 log4j-api,log4j-core,log4j-slf4j-impl这几个组件的, 2.使用的是日志注解是lombok包下面的@Slf4j注解,并没有版本号,因此找了半天没有发现使用log4j的日志,那么问题也就卡在这里,安全同事说我们不通过,但我也找不到问题所在 3.我们去掉spring-boot-starter-log4j2组件后,项目整个的日志都不打印了,因此又回退代码

解决方案

lombok下面的注解只是一个声明,具体的实现还是依赖的spring-boot-starter-log4j2这个组件,因此实际上我们使用的日志还是spring-boot-starter-log4j2组件下的log4 j,我直接把spring-boot-starter-log4j2日志的组件替换成以下日志的实现(实际上排掉org.apache.logging.log4j包这个即可)

从以下可以看出:只有 log4j-core JAR 文件受此漏洞影响。仅使用 log4j-api JAR 文件而不使用 log4j-core JAR 文件的应用程序不受此漏洞的影响。

从版本 2.17.1(以及 Java 7 和 Java 6 的 2.12.4 和 2.3.2)开始,JDBC Appender 将使用 JndiManager 并要求 log4j2.enableJndiJdbc 系统属性包含 true 值以启用 JNDI。

org.apache.logging.log4j

log4j-api

2.17.1

org.apache.logging.log4j

log4j-core

2.17.1

log4j-api

org.apache.logging.log4j

org.apache.logging.log4j

log4j-slf4j-impl

2.17.1

log4j-api

org.apache.logging.log4j

log4j-core

org.apache.logging.log4j

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: