配置解决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组件的版本机制的话,其实这个并不需要特地发版解决。只需要加个简单配置就可以了,具体如下图:
是的,就是这么简单,只需要在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