tencent cloud

弹性 MapReduce

动态与公告
产品动态
产品公告
安全公告
产品简介
产品概述
产品优势
产品架构
产品功能
应用场景
约束与限制
技术支持范围
产品发行版
购买指南
EMR on CVM 计费说明
EMR on TKE 计费说明
EMR Serverless HBase 计费说明
快速入门
EMR on CVM 快速入门
EMR on TKE 快速入门
EMR on CVM 操作指南
规划集群
管理权限
配置集群
管理集群
管理服务
监控告警
智能管家
EMR on TKE 操作指南
EMR on TKE 简介
配置集群
管理集群
管理服务
监控运维
应用分析
EMR Serverless HBase 操作指南
EMR Serverless HBase 产品简介
配额与限制
规划实例
管理实例
监控告警
开发指南
EMR 开发指南
Hadoop开发指南
Spark 开发指南
HBASE开发指南
Phoenix on Hbase 开发指南
Hive 开发指南
Presto开发指南
Sqoop 开发指南
Hue 开发指南
Oozie 开发指南
Flume 开发指南
Kerberos 开发指南
Knox 开发指南
Alluxio 开发指南
Kylin 开发指南
Livy 开发指南
Kyuubi 开发指南
Zeppelin 开发指南
Hudi 开发指南
Superset 开发指南
Impala 开发指南
Druid 开发指南
Tensorflow 开发指南
Kudu 开发指南
Ranger 开发指南
Kafka 开发指南
Iceberg 开发指南
StarRocks 开发指南
Flink 开发指南
JupyterLab 开发指南
MLflow 开发指南
实践教程
EMR on CVM 运维实践
数据迁移实践
自定义伸缩实践教程
API 文档
History
Introduction
API Category
Cluster Resource Management APIs
Cluster Services APIs
User Management APIs
Data Inquiry APIs
Scaling APIs
Configuration APIs
Other APIs
Serverless HBase APIs
YARN Resource Scheduling APIs
Making API Requests
Data Types
Error Codes
常见问题
EMR on CVM常见问题
服务等级协议
联系我们
文档弹性 MapReduce动态与公告安全公告Apache Log4j2 远程代码执行漏洞公告

Apache Log4j2 远程代码执行漏洞公告

PDF
聚焦模式
字号
最后更新时间: 2022-05-16 12:15:40

漏洞描述

近日,腾讯云关注到 Apache Log4j2远程代码执行漏洞被公开,Log4j2中存在 JNDI 注入漏洞,当程序将用户输入的数据进行日志记录时,即可触发此漏洞,利用此漏洞可以在目标服务器上执行任意代码。具体漏洞信息请参见 Apache Log4j2远程代码执行漏洞风险紧急告警

漏洞影响

在弹性 MapReduce 服务中 flink、hive、ranger、 presto、 oozie 、knox 、 storm 、druid 等组件有受此漏洞影响。请受影响的用户可参照以下方案进行修复。

解决方案

替换 log4j2的包为安全版本。 受影响版本:Apache log4j2 2.0 ~ 2.15.0-rc1。 安全版本:Apache log4j2-2.17.1正式版。

修复命令

1. 标准 EMR 目录修复命令。
wget https://image-repo-gz-1259353343.cos.ap-guangzhou.myqcloud.com/user-patches/common/fix-log4j2.sh -O fix-log4j2.sh && bash -x fix-log4j2.sh /usr/local/service
2. 运行任务时缓存目录中 jar 修复。
确保提交的任务里面没有问题 jar,否则下次提交的任务还会缓存。
直接删除目录下的问题 jar。
/data/emr/yarn/local/filecache/
/data/emr/yarn/local/usercache/
/data1/emr/yarn/local/filecache/
/data1/emr/yarn/local/usercache/
/data2/emr/yarn/local/filecache/
/data2/emr/yarn/local/usercache/
上述只列出了3块数据盘的情况,其中/data 后面跟的数字为数据盘索引,需要把全部数据盘的/data 目录下对应文件进行清理。
3. 非标准目录(非/usr/local/service 目录)修复,执行命令。
EXTRA_DISRUPTOR_DIR=/path/to/other bash fix-log4j2.sh /path/to/other
4. 其他场景修复。 升级该漏洞相关的6个jar包:log4j-api、log4j-core、log4j-jul、log4j-slf4j-impl、log4j-web 和 disruptor。如果没有上述的某个包,则无需替换。

重启服务与灰度修复

1. 对集群的某台机器执行修复。
重启这个节点上的服务 flink、spark、hive、ranger 、 presto 、oozie、storm、impala、knox、druid。
重启各个常驻任务,flink 任务,storm 任务,spark 任务。
2. 此节点重启服务验证没问题后,再执行其他节点的修复。

修复原理

1. 将修复后的6个 jar 放在执行目录的 fix-log4j 目录下。
2. 查找待修复目录,修复6个 jar 包,发现则替换,未发现不会替换,会同时替换 tar.gz 以及 war 包中的对应问题 jar,以及 hdfs 上/user/hadoop/share 路径下的缓存包。
替换其中的 log4j-api,log4j-core,log4j-jul,log4j-slf4j-impl,log4j-web 2.0~2.17.1 为2.17.1版本。
替换其中的 disruptor-3.4.2.jar 以下的版本为3.4.2版本,注意 disruptor 仅对部分组件替换。

服务有问题回滚步骤

需要将问题 jar 包拷贝回去,并删除添加的最新 jar 包。
1. 解压备份文件。
cd fix-log4j2
tar zxvf rm_if_no_need_to_rollback.tar.gz.1639576622
其中1639576622为临时生成的时间戳,需找到对应文件进行解压。
2. 将备份文件拷贝回去。
 cp -r ./root/fix-log4j2/emr_fix_log4j_bak_10812_1639576622/usr/local/service/* /usr/local/service/
其中10812_1639576622 为执行时临时生成的数字,需找到对应文件进行复制。
3. 删除添加的 log4j 系列最新 jar 包。
find /usr/local/service/ -name log4j-api-2.17.1.jar | xargs -n1 -I{} rm -f {}
find /usr/local/service/ -name log4j-web-2.17.1.jar | xargs -n1 -I{} rm -f {}
find /usr/local/service/ -name log4j-jul-2.17.1.jar | xargs -n1 -I{} rm -f {}
find /usr/local/service/ -name log4j-slf4j-impl-2.17.1.jar | xargs -n1 -I{} rm -f {}
find /usr/local/service/ -name log4j-core-2.17.1.jar | xargs -n1 -I{} rm -f {}
4. 如果是其他目录/path/to/other 的回滚,则将/usr/local/service/替换为/path/to/other。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈