近日国家信息安全漏洞共享平台(CNVD)提示,Apache Log4j2存在远程代码执行漏洞,攻击者利用该漏洞,可在未授权的情况下远程执行代码。目前,漏洞利用细节已公开,Apache官方已发布补丁修复该漏洞。

受影响版本

Java 类产品:Apache Log4j 2.x < 2.15.0-rc2

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

据不完全统计,可能的受影响应用及组件(包括但不限于)如下:

  • Apache Solr
  • Apache Flink
  • Apache Druid
  • Apache Struts2
  • srping-boot-strater-log4j2
  • Elasticsearch
  • flume
  • dubbo
  • Redis
  • logstash
  • kafka

Elasticsearch 的影响范围为全系列版本!!!包括最新的未发布 v8.0 版本.

7e4cfdf0855edb5c493ad2de4627d0e7.webp.jpeg

修复建议

目前,Apache官方已发布新版本完成漏洞修复,CNVD建议用户尽快进行自查,并及时升级至最新版本:

https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2

建议同时采用如下临时措施进行漏洞防范:
1)添加jvm启动参数-Dlog4j2.formatMsgNoLookups=true;
2)在应用classpath下添加log4j2.component.properties配置文件,文件内容为log4j2.formatMsgNoLookups=true;
3)JDK使用11.0.1、8u191、7u201、6u211及以上的高版本;
4)部署使用第三方防火墙产品进行安全防护。

截至发稿前,Log4j2 已发布 2.16.0 版本

ElasticSearch 修复建议

升级受影响的 jar 包至不受影响的版本。

以下为修复过程:


cd /root/
# 获取步骤省略

# 解压 log4j 二进制压缩包
tar xvf apache-log4j-2.16.0-bin.tar.gz

# 备份旧版文件
mkdir oldlog4j
cd oldlog4j
find /usr/share/elasticsearch/lib/ -name *log4j*.jar -exec cp {} . \;

# 停止 elasticsearch 服务
systemctl stop elasticsearch

# 添加新版 log4j 文件
cd /usr/share/elasticsearch/lib/
cp /root/apache-log4j-2.16.0-bin/log4j-1.2-api-2.16.0.jar .
cp /root/apache-log4j-2.16.0-bin/log4j-api-2.16.0.jar .
cp /root/apache-log4j-2.16.0-bin/log4j-core-2.16.0.jar .
cd /usr/share/elasticsearch/modules/x-pack-security/
cp /root/apache-log4j-2.16.0-bin/log4j-slf4j-impl-2.16.0.jar .

# 删除旧版文件
cd /usr/share/elasticsearch/modules/x-pack-security/
rm -rf log4j-slf4j-impl-2.11.1.jar

cd /usr/share/elasticsearch/lib/
rm -rf log4j-*-2.11.1.jar

# 启动 elasticsearch
systemctl start elasticsearch

# 观察是否启动正常
systemctl status elasticsearch.service

注意

此方法仅在 elasticsearch-6.8.7 测试成功,其他版本请自行测试。