一、漏洞描述
Apache Log4j 是 Apache 的一个开源项目,Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。我们可以控制日志信息输送的目的地为控制台、文件、GUI组件等,通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。该日志框架被大量用于业务系统开发,用来记录日志信息。
监测发现Log4j-2中存在JNDI注入漏洞,当程序将用户输入的数据被日志记录时,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。Apache Struts2、Apache Solr、Apache Druid、Apache Flink等Java组件均受影响。
二、影响版本
2.0 <= Apache Log4j 2 <= 2.14.1
排查方法:
1、可根据Java jar解压后是否存在org/apache/logging/log4j相关路径结构,判断是否使用了存在漏洞的组件;
2、若程序使用Maven打包,查看项目的pom.xml文件中是否存在“org.apache.logging.log4j”且版本号小于2.15.0,则存在漏洞。
三、修复建议
1、目前官方已发布安全版本,建议使用该组件的用户尽快采取安全措施,升级Apache Log4j 2至最新安全版本。下载地址:https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc1
2、临时缓解措施:
添加 jvm 启动参数 -Dlog4j2.formatMsgNoLookups=true。
在应用程序的 classpath 下添加 log4j2.component.properties 配置文件文件,文件内容:log4j2.formatMsgNoLookups=True;
设置系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true;
建议 JDK 使用 11.0.1、8u191、7u201、6u211 及以上的高版本;
限制受影响应用对外访问互联网。