一、漏洞简述  

 
Apache Log4j2 是一款开源的 Java 日志记录工具,大 
 
量的业务框架都使用了该组件。此次漏洞是用于 Log4j2 提 
 
供的 lookup 功能造成的,该功能允许开发者通过一些协议 
 
去读取相应环境中的配置。但在实现的过程中,并未对输入 
 
进行严格的判断,从而造成漏洞的发生。 
 
 
 二、影响范围  

 
受影响的版本如下: 
 
Log4j 版本 
 
是否受影响 
 
2.0<=2.15.rc1 
 
是 
 
存在风险的版本包括: 
 
Spring-Boot-strater-log4j2 
 
Apache Struts2 
 
Apache Solr 
 
Apache Flink 
 
Apache Druid 
 
ElasticSearch 
 
flume 
 
dubbo 
 
Redis 
 
logstash 
 kafka 
 
 
 三、漏洞详情  

 
Apache Log4j 是 Apache 的一个开源项目,通过定义 
 
每一条日志信息的级别,能够更加细致地控制日志生成过程。 
 
经过分析,Log4j-2 中存在 JNDI 注入漏洞,当程序将用户输 
 
入的数据进行日志记录时,即可触发此漏洞,成功利用此漏 
 
洞可以在目标服务器上执行任意代码。 
 
2021 年 12 月 9 日,Apache 官方发布了紧急安全更新以 
 
修复该远程代码执行漏洞,但更新后的 Apache Log4j 
 
2.15.0-rc1 版本被发现仍存在漏洞绕过,多家安全应急响 
 
应团队发布二次漏洞预警。 
 
12 月 10 日凌晨 2 点,Apache 官方紧急发布 log4j- 
 
2.15.0-rc2 版本,以修复 Apache log4j-2.15.0-rc1 版本远 
 
程代码执行漏洞修复不完善导致的漏洞绕过。 
 
 
 四、漏洞处置  

 
(一)临时缓解措施 
 
1.修改 jvm 参数 -Dlog4j2.formatMsgNoLookups=true 
 
2.在应用 classpath 下添加 
 
log4j2.component.properties 配置文件,文件内容为 
 
log4j2.formatMsgNoLookups=true 
 
3.将系统环境变量 
 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true 
 
 
 (二)官方修复建议  

 
目前漏洞 POC 已被公开,官方已发布安全版本,若是 
 
使用 Java 开发语言的系统需要尽快确认是否使用 Apache 
 
Log4j 2 插件,并尽快升级到最新的 log4j-2.15.0-rc2 版 
 
本。地址:https://github.com/apache/logging
 
log4j2/releases/tag/log4j-2.15.0-rc2 
 
 
 五、其它  

 
(一)攻击检测 
 
1.可以通过检查日志中是否存在 
 “ 
 jndi:ldap:// 
 ” 
 、 
 
“ 
 jndi:rmi 
 ” 
 等字符来发现可能的攻击行为。 
 
2.检查日志中是否存在相关堆栈报错,堆栈里是否有 
 
JndiLookup、ldapURLContext、 
 
getObjectFactoryFromReference 等与 jndi 调用相关的堆 
 
栈信息。
 
 
个人建议直接在pom.xml加入版本升级
<dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-api</artifactId>
             <version>2.16.0</version>
 </dependency>