当前位置: 首页 -> 网络安全 -> 安全公告 -> 正文

Apache Log4j2远程代码执行漏洞排查及修复手册

作者:时间:2024-11-15 15:10:01访问:

近期,Apache Log4j2远程代码执行漏洞(CNVD-2021- 95914) 曝光, 引发社会广泛关注。攻击者利用该漏洞, 可在未授权的情况下远程执行代码,获得服务器控制权限。经中心综合技术分析研判,该漏洞具有危害程度高、利用难度低、影响范围大的特点。为正确处置突发漏洞风险, 降低漏 洞带来的损失, 中心整理《Apache Log4j2 远程代码执行漏洞排查及修复手册》以供相关单位、企业及个人参考。

一、漏洞情况分析

Apache Log4j是一个基于Java 的日志记录组件。Apach e Log4j2 是Log4j 的升级版本,通过重写 Log4j 引入了丰富 的功能特性。该日志组件被广泛应用于业务系统开发, 用以 记录程序输入输出日志信息。

Log4j2组件在处理程序日志记录时存在 JNDI 注入缺陷, 未经授权的攻击者利用该漏洞,可向目标服务器发送精心构造的恶意数据,触发Log4j2 组件解析缺陷,实现目标服务器 的任意代码执行,获得目标服务器权限。

CNVD 对该漏洞的综合评级为“高危”。

二、漏洞排查方法

1. 版本排查

存在该漏洞的Log4j2 组件版本为:Log4j2.X≤Log4j组件 版本<Log4j-2.15.0-rc2。具体组件版本排查方法如下:

(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. 中间件排查

Apache Log4j2组件通常会嵌套在其他中间件使用,需 要相关人员查看开发文档或联系系统开发商、维护人员进行 判断是否有使用相关中间件。

涉及的受影响中间件或应用,包括但不限于:Apache S olr、Apache Druid、Apache Struts2、Apache Flink、Flume、 Dubbo、Redis、Logstash、ElasticSearch、Kafka、Ghidra、M inecraft、Apache hive、Datax、 Streaming、Dolphin Schedul er、 Storm、 Spring等。

三、攻击情况排查

1. 日志排查

攻击者常采用dnslog方式进行扫描、探测,对于常见漏洞利用方式对应用系统报错日志中的“javax.naming.Commun icationException”、“javax.naming.NamingException: problem generating object using object factory” 、“Error looking up J NDI resource”等关键字段进行排查。

2. 流量排查

攻击者的漏洞利用数据包中可能存在:“${jndi:rmi”、“${j ndi:ldap”等字样, 通过监测相关流量是否存在上述字符以发 现可能的攻击行为。

四、漏洞修复建议

1. 升级至安全版本

目前,Apache 官方已发布新版本完成漏洞修复,请及时 升级至最新版本 2.16.0:https://logging.apache.org/log4j/2.x/d ownload.html

2. 临时修复措施 (任选其一)

( 1)添加 jvm 启动参数-Dlog4j2.formatMsgNoLookups= true;

(2)在应用classpath 下添加log4j2.component.propertie s配置文件,文件内容为log4j2.formatMsgNoLookups=true;

(3)JDK 使用11.0.1、8u191、 7u201、6u211 及以上的 高版本;

(4)限制受影响应用对外访问互联网

(5)禁用JNDI。如在spring.properties 里添加spring.jn di.ignore=true

(6)部署使用第三方防火墙产品进行安全防护,并更 新WAF、RASP规则等。