配置解决Spring Boot项目的 log4j2 漏洞

1、漏洞简介

Apache Log4j 2是一款优秀的Java日志框架。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。由于Apache Log4j 2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。

2、漏洞危害

漏洞利用无需特殊配置,攻击者可直接构造恶意请求,触发远程代码执行漏洞。

3、漏洞编号

暂无

4、影响范围

Apache Log4j 2.x <= 2.14.1

5、修复措施

建议排查Java应用是否引入log4j-api , log4j-core 两个jar,若存在使用,极大可能会受到影响,强烈建议受影响用户尽快进行防护 。

  • 升级Apache Log4j 2所有相关应用到最新的 log4j-2.15.0版本
  • 升级已知受影响的应用及组件,如:

    • spring-boot-strater-log4j2
    • Apache Solr
    • Apache Flink
    • Apache Druid
最简修复方式

有些小伙伴其实想到了直接通过Spring Boot的Starter去解决,所以还给Spring Boot提了Issue,希望spring-boot-starter-log4j2可以支持最新的2.15版本(提Issue的时候还是rc1,现在已经release了)

但熟悉Spring Boot组件的版本机制的话,其实这个并不需要特地发版解决。只需要加个简单配置就可以了,具体如下图:

img

是的,就是这么简单,只需要在pom.xml中像下面配置就可以了:

<properties>
    <log4j2.version>2.15.0</log4j2.version>
</properties>

如果是Gradle用户,也是类似,按如下配置即可:

ext['log4j2.version'] = '2.15.0'

6、紧急缓解措施:

如果还来不及更新版本修复,可通过下面的方法紧急缓解问题

(1) 修改jvm参数 -Dlog4j2.formatMsgNoLookups=true
(2) 修改配置:log4j2.formatMsgNoLookups=True
(3) 将系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true

最后修改:2022 年 10 月 18 日
如果觉得我的文章对你有用,请点个赞吧~