View a markdown version of this page

減輕 CVE-2021-44228 影響的方法 - Amazon EMR

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

減輕 CVE-2021-44228 影響的方法

注意

對於 Amazon EMR 6.9.0 版及更高版本,Amazon EMR 安裝的所有使用 Log4j 程式庫的元件均使用 Log4j 版本 2.17.1 或更高版本。

EC2 上執行的 Amazon EMR

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,您不會受 CVE-2021-44228 中所述問題的影響,而且您不必套用 針對 Log4j CVE-2021-44228 和 CVE-2021-45046 的 Amazon EMR 引導操作解決方案 一節中所述的解決方案。對於 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 引導操作解決方案

此解決方案提供必須套用於 Amazon EMR 叢集的 Amazon EMR 引導操作。對於每個 Amazon EMR 版本,您將在下方尋找引導操作指令碼的連結。若要套用此引導操作,您應該完成下列步驟:

  1. 將與您的 Amazon EMR 版本對應的指令碼複製到 AWS 帳戶 中的本機 S3 儲存貯體。請確定您正使用專屬於您的 Amazon EMR 版本之引導指令碼。

  2. 依據 EMR 文件中的指示,為您的 EMR 叢集設定引導操作,以執行複製到您的 S3 儲存貯體的指令碼。如果您為 EMR 叢集設定了其他引導操作,請確保此指令碼設為第一個要執行的引導操作指令碼。

  3. 終止現有的 EMR 叢集,並使用引導操作指令碼啟動新叢集。AWS建議您在測試環境中測試引導指令碼,並在將其套用至生產環境之前驗證您的應用程式。如果您未使用 EMR 次要版本的最新修訂版 (例如 6.3.0),則必須使用最新修訂版 (例如 6.3.1),然後套用上述解決方案。

CVE-2021-44228 和 CVE-2021-45046:適用於 Amazon EMR 版本的引導指令碼
Amazon EMR 版本編號 指令碼位置 指令碼版本日期
6.5.0
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-6.5.0-v2.sh
2022 年 3 月 24 日
6.4.0
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-6.4.0-v2.sh
2022 年 3 月 24 日
6.3.1
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-6.3.1-v2.sh
2022 年 3 月 24 日
6.2.1
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-6.2.1-v2.sh
2022 年 3 月 24 日
6.1.1
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-6.1.1-v2.sh
2021 年 12 月 14 日
6.0.1
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-6.0.1-v2.sh
2021 年 12 月 14 日
5.34.0
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.34.0-v2.sh
2021 年 12 月 12 日
5.33.1
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.33.1-v2.sh
2021 年 12 月 12 日
5.32.1
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.32.1-v2.sh
2021 年 12 月 13 日
5.31.1
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.31.1-v2.sh
2021 年 12 月 13 日
5.30.2
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.30.2-v2.sh
2021 年 12 月 14 日
5.29.0
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.29.0-v2.sh
2021 年 12 月 14 日
5.28.1
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.28.1-v2.sh
2021 年 12 月 15 日
5.27.1
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.27.1-v2.sh
2021 年 12 月 15 日
5.26.0
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.26.0-v2.sh
2021 年 12 月 15 日
5.25.0
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.25.0-v2.sh
2021 年 12 月 15 日
5.24.1
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.24.1-v2.sh
2021 年 12 月 15 日
5.23.1
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.23.1-v2.sh
2021 年 12 月 15 日
5.22.0
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.22.0-v2.sh
2021 年 12 月 15 日
5.21.2
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.21.2-v2.sh
2021 年 12 月 15 日
5.20.1
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.20.1-v2.sh
2021 年 12 月 15 日
5.19.1
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.19.1-v2.sh
2021 年 12 月 15 日
5.18.1
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.18.1-v2.sh
2021 年 12 月 15 日
5.17.2
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.17.2-v2.sh
2021 年 12 月 15 日
5.16.1
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.16.1-v2.sh
2021 年 12 月 15 日
5.15.1
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.15.1-v2.sh
2021 年 12 月 15 日
5.14.2
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.14.2-v2.sh
2021 年 12 月 15 日
5.13.1
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.13.1-v2.sh
2021 年 12 月 15 日
5.12.3
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.12.3-v2.sh
2021 年 12 月 15 日
5.11.4
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.11.4-v2.sh
2021 年 12 月 15 日
5.10.1
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.10.1-v2.sh
2021 年 12 月 15 日
5.9.1
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.9.1-v2.sh
2021 年 12 月 15 日
5.8.3
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.8.3-v2.sh
2021 年 12 月 15 日
5.7.1
s3://elasticmapreduce/bootstrap-actions/log4j/patch-log4j-emr-5.7.1-v2.sh
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

常見問答集

  • 早於 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 映像檔

    如果您使用自訂 Docker 映像檔將自訂應用程式新增至 EKS 上的 Amazon EMR,或使用自訂應用程式檔案提交作業到 EKS 上的 Amazon EMR,請與您的應用程式廠商合作來確定您的自訂應用程式是否受 CVE-2021-44228 影響以及相應的解決方案。

  • 引導指令碼如何解決 CVE-2021-44228 和 CVE-2021-45046 中描述的問題?

    引導指令碼透過新增一組指示來更新 EMR 啟動指示。這些新指示會刪除所有開放原始碼架構透過 Log4j 使用的 JndiLookup 類別檔案,此類架構由 EMR 安裝。這符合 Apache 發布的建議,可解決 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 使用可查詢內容的 Apache Log4j,並且它不會以允許處理不當輸入資料的方式使用非預設模式配置。

  • 下列披露的任一 CVE 會影響 Amazon EMR 嗎?

    下表列出與 Log4j 相關的 CVE 清單,以及每個 CVE 是否會影響 Amazon EMR 的註解。此資料表中的資訊僅針對 Amazon EMR 使用預設組態安裝的應用程式。

    CVE 影響 EMR 備註
    CVE-2022-23302 Amazon EMR 不會設定 Log4j JMSSink
    CVE-2022-23305 Amazon EMR 不會設定 Log4j JDBCAppender
    CVE-2022-23307 Amazon EMR 不會設定 Log4j Chainsaw
    CVE-2020-9493 Amazon EMR 不會設定 Log4j Chainsaw
    CVE-2021-44832 Amazon EMR 不會設定使用 JNDI 連線字串的 Log4j JDBCAppender
    CVE-2021-4104 Amazon EMR 不會設定 Log4j JMSAppender
    CVE-2020-9488 Amazon EMR 安裝的應用程式不使用 Log4j SMTPAppender
    CVE-2019-17571 Amazon EMR 會封鎖對叢集的公開存取,並且不會啟動 SocketServer
    CVE-2019-17531 建議您升級至最新的 Amazon EMR 發行版本。Amazon EMR 5.33.0 及更高版本使用 jackson-databind 2.6.7.4 或更高版本,而 EMR 6.1.0 及更高版本使用 jackson-databind 2.10.0 或更高版本。這些 jackson-databind 版本不受 CVE 影響。