前言:上周五有关开源日志框架Log4j2高危漏洞预警发出后,这几天各大互联网公司都在加班加点做紧急漏洞处理。这是个什么漏洞呢?有多大危害,搞得互联网任人心惶惶!
目录
漏洞背景
开源框架Apache Log4j2是一款非常优秀的日志记录框架,功能丰富,性能优越,应用于大量的业务系统中,深受广大java开发者的喜爱。
本次漏洞其实是基于log4j2的lookup功能造成的,当用户输入的日志参数非法${XXX}时,log4j2并没有做严格的校验,而是会解析非法参数${}中的内容并执行。这样就会给一些非法分子利用此漏洞的机会,发送一些系统操作命令,从而控制服务器,造成不可估量的损失。
影响范围
2.0版本到2.15.0-rc1均会收到影响
一些开源工具也收到影响(flink/solr/druid/kafka…)
解决方案
紧急方案:
jvm启动参数增加配置 -Dlog4j2.formatMsgNoLookups=true
最终方案:
及时更新至Apache Log4j 2.15.0-rc2版本
漏洞复现
整体流程
模拟业务逻辑打印日志
新建工程并添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dep