

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 缓解 CVE-2021-44228 的方法
<a name="emr-log4j-vulnerability"></a>

**注意**  
对于 Amazon EMR 发行版 6.9.0 及更高版本，Amazon EMR 安装的所有使用 Log4j 库的组件都使用 Log4j 版本 2.17.1 或更高版本。

**在 EC2 上运行的 Amazon EMR**

[CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) 中讨论的问题在处理来自不可信来源的输入时，与 2.0.0 到 2.14.1 之间的 Apache Log4j 核心版本相关。随 Amazon EMR 5.x 发行版（最高 5.34.0）和 EMR 6.x 发行版（最高 Amazon EMR 6.5.0）一起启动的 Amazon EMR 集群包括开源框架，例如 Apache Hive、Flink、HUDI、Presto 和 Trino，均使用这些版本的 Apache Log4j。但是，有许多客户使用安装在其 Amazon EMR 集群上的开源框架来处理和记录来自不可信来源的输入。

我们建议您按照下节所述，应用“适用于 Log4j CVE-2021-44228 的 Amazon EMR 引导操作解决方案”。此解决方案还解决了 CVE-2021-45046 问题。

**注意**  
Amazon EMR 的引导操作脚本已于 2022 年 9 月 7 日更新，包括对 Oozie 的增量错误修复和改进。如果您使用 Oozie，则按照下节所述，应用更新后的 Amazon EMR 引导操作解决方案。

**Amazon EMR on EKS**

如果您使用默认配置的 [Amazon EMR on EKS](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/emr-eks.html)，则不会受到 CVE-2021-44228 中所述问题的影响，也不必应用 [适用于 Log4j CVE-2021-44228 和 CVE-2021-45046 的 Amazon EMR 引导操作解决方案](#emr-log4j-vulnerability-patch-instructions) 部分中所述的解决方案。对于 Amazon EMR on EKS，适用于 Spark 的 Amazon EMR 运行时使用 Apache Log4j 版本 1.2.17。使用 Amazon EMR on EKS 时，不得将 `log4j.appender` 组件的默认设置更改为 `log`。

## 适用于 Log4j CVE-2021-44228 和 CVE-2021-45046 的 Amazon EMR 引导操作解决方案
<a name="emr-log4j-vulnerability-patch-instructions"></a>

此解决方案提供了必须在 Amazon EMR 集群上应用的 Amazon EMR 引导操作。对于每个 Amazon EMR 发行版，您都会在下面找到一个指向引导操作脚本的链接。要应用此引导操作，您应完成以下步骤：

1. 将与 Amazon EMR 发行版对应的脚本复制到 AWS 账户中的本地 S3 存储桶。请确保您使用的是 Amazon EMR 发行版特定的引导脚本。

1. 为 EMR 集群设置引导操作，以按照 [EMR 文档](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-bootstrap.html)中所述的说明运行复制到 S3 存储桶的脚本。如果您为 EMR 集群配置了其他引导操作，请确保将此脚本设置为要执行的第一个引导操作脚本。

1. 终止现有 EMR 集群，并使用引导操作脚本启动新集群。 AWS 建议您在测试环境中测试引导脚本并验证应用程序，然后再将其应用于生产环境。如果您没有为 EMR 次要版本（例如 6.3.0）使用最新版本，则必须使用最新版本（例如 6.3.1），然后应用上面讨论的解决方案。


**CVE-2021-44228 和 CVE-2021-45046 - Amazon EMR 发行版的引导脚本**  

| Amazon EMR 版本号 | 脚本位置 | 脚本发布日期 | 
| --- | --- | --- | 
| 6.5.0 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-6.5.0-v2.sh</pre>  | 2022 年 3 月 24 日 | 
| 6.4.0 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-6.4.0-v2.sh</pre>  | 2022 年 3 月 24 日 | 
| 6.3.1 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-6.3.1-v2.sh</pre>  | 2022 年 3 月 24 日 | 
| 6.2.1 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-6.2.1-v2.sh</pre>  | 2022 年 3 月 24 日 | 
| 6.1.1 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-6.1.1-v2.sh</pre>  | 2021 年 12 月 14 日 | 
| 6.0.1 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-6.0.1-v2.sh</pre>  | 2021 年 12 月 14 日 | 
| 5.34.0 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.34.0-v2.sh</pre>  | 2021 年 12 月 12 日 | 
| 5.33.1 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.33.1-v2.sh</pre>  | 2021 年 12 月 12 日 | 
| 5.32.1 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.32.1-v2.sh</pre>  | 2021 年 12 月 13 日 | 
| 5.31.1 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.31.1-v2.sh</pre>  | 2021 年 12 月 13 日 | 
| 5.30.2 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.30.2-v2.sh</pre>  | 2021 年 12 月 14 日 | 
| 5.29.0 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.29.0-v2.sh</pre>  | 2021 年 12 月 14 日 | 
| 5.28.1 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.28.1-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.27.1 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.27.1-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.26.0 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.26.0-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.25.0 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.25.0-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.24.1 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.24.1-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.23.1 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.23.1-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.22.0 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.22.0-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.21.2 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.21.2-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.20.1 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.20.1-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.19.1 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.19.1-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.18.1 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.18.1-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.17.2 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.17.2-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.16.1 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.16.1-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.15.1 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.15.1-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.14.2 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.14.2-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.13.1 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.13.1-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.12.3 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.12.3-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.11.4 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.11.4-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.10.1 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.10.1-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.9.1 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.9.1-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.8.3 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.8.3-v2.sh</pre>  | 2021 年 12 月 15 日 | 
| 5.7.1 |  <pre>s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.7.1-v2.sh</pre>  | 2021 年 12 月 15 日 | 


****  

| EMR 发布版本 | 截至 2021 年 12 月的最新修订 | 
| --- | --- | 
| 6.3.0 | 6.3.1 | 
| 6.2.0 | 6.2.1 | 
| 6.1.0 | 6.1.1 | 
| 6.0.0 | 6.0.1 | 
| 5.33.0 | 5.33.1 | 
| 5.32.0 | 5.32.1 | 
| 5.31.0 | 5.31.1 | 
| 5.30.0 或 5.30.1 | 5.30.2 | 
| 5.28.0 | 5.28.1 | 
| 5.27.0 | 5.27.1 | 
| 5.24.0 | 5.24.1 | 
| 5.23.0 | 5.23.1 | 
| 5.21.0 或 5.21.1 | 5.21.2 | 
| 5.20.0 | 5.20.1 | 
| 5.19.0 | 5.19.1 | 
| 5.18.0 | 5.18.1 | 
| 5.17.0 或 5.17.1 | 5.17.2 | 
| 5.16.0 | 5.16.1 | 
| 5.15.0 | 5.15.1 | 
| 5.14.0 或 5.14.1 | 5.14.2 | 
| 5.13.0 | 5.13.1 | 
| 5.12.0、5.12.1、5.12.2 | 5.12.3 | 
| 5.11.0、5.11.1、5.11.2、5.11.3 | 5.11.4 | 
| 5.9.0 | 5.9.1 | 
| 5.8.0、5.8.1、5.8.2 | 5.8.3 | 
| 5.7.0 | 5.7.1 | 

## 常见问题
<a name="emr-log4j-vulnerability-faqs"></a>
+ **EMR 5 之前的 EMR 版本是否受到 CVE-2021-44228 的影响**？

  否。EMR 版本 5 之前的 EMR 版本使用 2.0 之前的 Log4j 版本。
+ **此解决方案是否解决了 CVE-2021-45046 的问题？**

  此解决方案还解决了 **CVE-2021-45046** 问题。
+ **该解决方案是否处理了我在 EMR 集群上安装的自定义应用程序？**

  引导脚本仅更新 EMR 安装的 JAR 文件。如果您通过使用自定义 Amazon Linux AMI 或通过任何其他机制，通过引导操作在您的 EMR 集群上安装自定义应用程序和 JAR 文件并将其作为提交至集群的步骤运行，请与您的应用程序提供商合作，以确定您的自定义应用程序是否受 CVE-2021- 44228 影响，并确定合适的解决方案。
+ **我应该如何使用 EKS 上的 EMR 处理[自定义 Docker 映像](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/docker-custom-images.html)？**

  如果您使用自定义 [docker 镜像](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/docker-custom-images.html)向 EKS 上的 Amazon EMR 添加自定义应用程序，或者使用 EKSwith 自定义应用程序文件向 Amazon EMR 提交任务，请与应用程序供应商合作，确定您的自定义应用程序是否受到 CVE-2021-44228 的影响，并确定适当的解决方案。
+ **引导脚本如何缓解 CVE-2021-44228 和 CVE-2021-45046 中描述的问题？**

  引导脚本通过添加一组新的指令来更新 EMR 启动指令。这些新指令删除了 EMR 安装的所有开源框架通过 Log4j 使用的 JndiLookup 类文件。这遵循了 [Apache 发布的](https://nvd.nist.gov/vuln/detail/CVE-2021-45046#vulnCurrentDescriptionTitle)用于解决 Log4j 问题的建议。
+ **使用 Log4j 版本 2.17.1 或更高版本的 EMR 是否有更新？**

  不超过版本 5.34 的 EMR 5 发行版以及不超过版本 6.5 的 EMR 6 发行版使用不兼容最新版本 Log4j 的较旧版本开源框架。如果您继续使用这些版本，我们建议您应用引导操作来缓解中 CVEs讨论的问题。在 EMR 5 发行版 5.34 和 EMR 6 发行版 6.5 以后，使用 log4J 1.x 和 log4J 2.x 的应用程序将分别升级为使用 log4J 1.2.17（或更高版本）和 log4J 2.17.1（或更高版本），并且不需要使用上面介绍的引导操作来缓解 CVE 问题。
+ **EMR 版本是否受到 CVE-2021-45105 的影响？**

  由 Amazon EMR 安装的具有 EMR 默认配置的应用程序不受 CVE-2021-45105 的影响。在 Amazon EMR 安装的应用程序中，只有 Apache Hive 将 Apache Log4j 与[上下文查找](https://logging.apache.org/log4j/2.x/index.html)结合使用，而且它不会以允许处理不适当的输入数据的方式使用非默认模式布局。
+ **Amazon EMR 是否受以下任何 CVE 披露的影响？**

  下表包含与 Log4j 相关的列表 CVEs ，并注明了每个 CVE 是否会影响 Amazon EMR。此表中的信息仅适用于 Amazon EMR 使用原定设置配置安装应用程序的情形。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ReleaseGuide/emr-log4j-vulnerability.html)