近日,阿里云计算有限公司发现Apache Log4j2组件存在远程代码执行漏洞,并将漏洞情况告知Apache软件基金会。本文为您介绍该漏洞的影响范围及相应的修复方案。
漏洞影响
具体漏洞详情,请参见【漏洞通告】Apache Log4j2 远程代码执行漏洞(CVE-2021-44228/CVE-2021-45046)。E-MapReduce(简称EMR)集群内受到影响的组件包括:Hive、Presto、Impala、Druid、Flink、Solr、Ranger、Storm、Oozie、Spark和Zeppelin,其中Spark和Zeppelin是由于依赖Hive组件而受到影响。
漏洞修复方案
您需要将EMR集群内包含漏洞的Log4j2 JAR包整体替换为2.17.0正式版本,同时修改Hive和Spark Log4j配置,禁用JNDI Lookup功能(log4j2.formatMsgNoLookups=true
)。具体操作流程,请参见修复流程。
该修复方案:
- 适用于EMR-3.38.2及之前版本,EMR-5.4.2及之前版本,EMR-4.x版本。EMR-3.38.3及之后版和EMR-5.4.3及之后版本已修复该问题,无需进行修复操作。
- 执行该修复方案后,需要重启对应的组件。
- 该漏洞修复脚本不会对线上业务造成影响,但由于必须重启对应的组件才能生效,所以建议业务低峰期时执行。
修复流程
EMR集群
Gateway集群
由于该方案依赖于SSH免密登录,对于Gateway集群,您需要手动将patch包上传到Gateway集群的每一个节点,并按EMR集群的修复流程分别执行修复操作。
注意 patch包中的hosts文件只需要填写当前执行节点的hostname。
新建集群和扩容已有集群
新建EMR集群时在EMR控制台添加引导操作,或扩容已有集群时可以自动修复漏洞。具体操作步骤如下: