Apache Log4j2是一款优秀的java开源日志框架,使用非常广泛。2021年12月9日,Apache Log4j2爆出存在远程代码执行漏洞,由于Apache Log4j2广泛地应用在各种Web程序中,该漏洞涉及用户量较大,危害性非常高。
目前,灰度安全先知·智能风险评估系统已更新POC库,全面支持对Log4j任意代码执行漏洞的检测。
版本影响
Apache Log4j2 2.0 ~ 2.15.0-rc1
漏洞复现
漏洞分析
Debug查看漏洞执行时的程序调用链,如下图所示:
Log4j在解析日志时,会判断日志内容中是否包含${}符号,如果存在,就会对{}标签中的内容进行特殊解析处理,可以通过ldap协议远程加载类。
临时解决方案
1、目前,Apache官方已发布新版本完成漏洞修复,建议用户尽快进行自查,并及时升级至最新版本:https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
2、建议同时采用如下临时措施进行漏洞防范:
1)添加jvm启动参数-Dlog4j2.formatMsgNoLookups=true;
2)在应用classpath下添加log4j2.component.properties配置文件,文件内容为log4j2.formatMsgNoLookups=true;
3)JDK使用11.0.1、8u191、7u201、6u211及以上的高版本;
4)部署使用第三方防火墙产品进行安全防护。
声明:
本文仅用于技术研究,不恰当使用会造成危害,严禁违法使用 ,否则后果自负。