一、框架简介
Apache Log4j 2是一款优秀的Java日志框架。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。
二、漏洞清单
由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。[漏洞链接](CVE - CVE-2021-44228 (mitre.org))
安全公司 Praetorian 发现 2.15.0 存在一个更严重的漏洞——信息泄露漏洞,可用于从受影响的服务器下载数据。[漏洞链接](Log4j 2.15.0 stills allows for exfiltration of sensitive data - Praetorian)
Apache Log4j2 版本 2.0-alpha1 到 2.16.0 没有防止自引用查找的不受控制的递归。当日志配置使用带有上下文查找的非默认模式布局(例如,$${ctx:loginId})时,控制线程上下文映射 (MDC) 输入数据的攻击者可以制作包含递归查找的恶意输入数据,导致 StackOverflowError 将终止进程。这也称为 DOS(拒绝服务)攻击。[漏洞链接](CVE - CVE-2021-45046 (mitre.org))
三、影响范围
Apache Log4j 2.x 以上
四、修复措施
建议排查Java应用是否引入log4j-api , log4j-core 两个jar,若存在使用,极大可能会受到影响,强烈建议受影响用户尽快进行防护 。
4.1升级Apache Log4j 2所有相关应用到最新的log4j-2.17.0-rc1
升级Apache Log4j 2所有相关应用到最新的 log4j-2.17.0-rc1 版本,地址:Release log4j-2.17.0-rc1 · apache/logging-log4j2 · GitHub
4.2 升级已知受影响的应用及组件,如:
1. spring-boot-strater-log4j22. Apache Solr3. Apache Flink4. Apache Druid复制代码
五、紧急缓解措施
如果还来不及更新版本修复,可通过下面的方法紧急缓解问题
(1) 修改jvm参数
-Dlog4j2.formatMsgNoLookups=true
(2) 修改配置:log4j2.formatMsgNoLookups=True
(3) 将系统环境变量
FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true
六、感谢
辛苦了 log4j2 的社区维护者,加班加点的干活,无私奉献! 2周发了3个版本,从2.15---->2.16--->2.17,希望有朝一日也能给开源社区做点贡献!