近期,Apache Log4j2远程代码执行漏洞(CNVD-2021-95914)曝光,引发社会广泛关注。攻击者利用该漏洞,可在未授权的情况下远程执行代码,获得服务器控制权限。经中心综合技术分析研判,该漏洞具有危害程度高、利用难度低、影响范围大的特点。为正确处置突发漏洞风险,降低漏洞带来的损失,中心整理《Apache Log4j2远程代码执行漏洞排查及修复手册》以供相关单位、企业及个人参考。
一、漏洞情况分析
Apache Log4j是一个基于Java的日志记录组件。Apache Log4j2是Log4j的升级版本,通过重写Log4j引入了丰富的功能特性。该日志组件被广泛应用于业务系统开发,用以记录程序输入输出日志信息。
Log4j2组件在处理程序日志记录时存在JNDI注入缺陷,未经授权的攻击者利用该漏洞,可向目标服务器发送精心构造的恶意数据,触发Log4j2组件解析缺陷,实现目标服务器的任意代码执行,获得目标服务器权限。
CNVD对该漏洞的综合评级为“高危”。
二、漏洞排查方法
2.1 版本排查
存在该漏洞的Log4j2组件版本为:Log4j2.X≤Log4j组件版本<log4j-2.15.0-rc2。具体组件版本排查方法如下:< p="">
(1)根据Java JAR解压后是否存在org/apache/logging/log4j相关路径结构,查询Log4j2组件及其版本情况。
(2)若程序使用Maven打包,查看项目的pom.xml文件中org.apache.logging.log4j相关字段及版本情况。
(3)若程序使用Gradle打包,可查看build.gradle编译配置文件,查看中org.apache.logging.log4j相关字段及版本情况。
2.2 中间件排查
Apache Log4j2组件通常会嵌套在其他中间件使用,需要相关人员查看开发文档或联系系统开发商、维护人员进行判断是否有使用相关中间件。
涉及的受影响中间件或应用,包括但不限于:Apache Solr、Apache Druid、Apache Struts2、Apache Flink、Flume、Dubbo、Redis、Logstash、ElasticSearch、Kafka、Ghidra、Minecraft、Apache hive、Datax、Streaming、Dolphin Scheduler、Storm、Spring等。