

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 減輕 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 問題。

**注意**  
2022 年 9 月 7 日更新的 Amazon EMR 引導操作指令碼包含針對 Oozie 的增量錯誤修正和改進項目。如果使用 Oozie，您應該套用更新後的 Amazon EMR 引導操作解決方案，如下一節中所述。

**Amazon EMR on EKS**

如果使用具有預設組態的 [EKS 上的 Amazon EMR](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) 一節中所述的解決方案。對於 EKS 上的 Amazon EMR，適用於 Spark 的 Amazon EMR 執行期使用 Apache Log4j 版本 1.2.17。在 EKS 上使用 Amazon EMR 時，您不應將 `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 文件](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-bootstrap.html)中的指示，為您的 EMR 叢集設定引導操作，以執行複製到您的 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 檔案。如果您透過引導操作在 EMR 叢集上安裝於執行自訂應用程式和 JAR 檔案，如提交至叢集的步驟、透過使用自訂 Amazon Linux AMI 或任何其他機制，請與您的應用程式廠商合作來確定您的自訂應用程式是否受 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，或使用自訂應用程式檔案提交作業到 EKS 上的 Amazon EMR，請與您的應用程式廠商合作來確定您的自訂應用程式是否受 CVE-2021-44228 影響以及相應的解決方案。
+ **引導指令碼如何解決 CVE-2021-44228 和 CVE-2021-45046 中描述的問題？**

  引導指令碼透過新增一組指示來更新 EMR 啟動指示。這些新指示會刪除所有開放原始碼架構透過 Log4j 使用的 JndiLookup 類別檔案，此類架構由 EMR 安裝。這符合 [Apache 發布的建議](https://nvd.nist.gov/vuln/detail/CVE-2021-45046#vulnCurrentDescriptionTitle)，可解決 Log4j 問題。
+ **有沒有更新是針對使用 Log4j 版本 2.17.1 或更高版本的 EMR？**

  EMR 5 版本 (最高 5.34) 和 EMR 6 版本 (最高 6.5) 使用的舊版開放原始碼架構與最新版本的 Log4j 不相容。如果您繼續使用這些版本，則建議您套用引導指令碼以解決 CVE 中討論的問題。在 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 使用可[查詢內容](https://logging.apache.org/log4j/2.x/index.html)的 Apache Log4j，並且它不會以允許處理不當輸入資料的方式使用非預設模式配置。
+ **下列披露的任一 CVE 會影響 Amazon EMR 嗎？**

  下表列出與 Log4j 相關的 CVE 清單，以及每個 CVE 是否會影響 Amazon EMR 的註解。此資料表中的資訊僅針對 Amazon EMR 使用預設組態安裝的應用程式。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ReleaseGuide/emr-log4j-vulnerability.html)