全部產品
Search
文件中心

E-MapReduce:漏洞公告 | Apache Kafka Connect遠程代碼執行漏洞

更新時間:Jan 21, 2025

2023年02月08日,Apache發布了一則資訊安全諮詢,修複了Apache Kafka中存在的一個還原序列化漏洞,漏洞編號為CVE-2023-25194。在攻擊者可以控制Apache Kafka Connect用戶端的情況下,通過SASL JAAS配置和基於SASL的安全性通訊協定,在其上建立或修改連接器,從而觸發JNDI代碼執行漏洞。

漏洞影響

  • 漏洞影響的Kafka版本:2.3.0 <= Apache Kafka <= 3.3.2

  • 受漏洞影響的EMR產品版本:

    • EMR 5.x系列:EMR-5.16.0之前版本

    • EMR 3.x系列:EMR-3.50.0之前版本

    說明

    EMR-3.50.0及後續版本,EMR-5.16.0及後續版本已經修複了該漏洞,無需手動修複。

修複流程

根據Kafka所在的叢集類型不同,修複方式也會有所不同。

即時資料流(DataFlow)

  1. 下載修複漏洞後的Kafka軟體版本。

  2. 登入叢集的Master節點,並上傳前一步驟中下載的軟體包到/opt/apps/KAFKA/目錄下。

    登入叢集詳情,請參見登入叢集

  3. 執行以下命令,將安裝包複製到core-1-1節點的/opt/apps/KAFKA/目錄下。

    EMR-5.16.0(EMR 5.x系列)之前的版本

    sudo su - emr-user
    ssh core-1-1 'sudo chmod a+w /opt/apps/KAFKA'
    scp /opt/apps/KAFKA/kafka-2.13-3.6.1-1.0.0.tar.gz core-1-1:/opt/apps/KAFKA/

    EMR-3.50.0(EMR 3.x系列)之前的版本

    sudo su - emr-user
    ssh core-1-1 'sudo chmod a+w /opt/apps/KAFKA'
    scp /opt/apps/KAFKA/kafka-2.12-2.4.1-1.1.5.tar.gz core-1-1:/opt/apps/KAFKA/
  4. 執行以下命令,登入core-1-1節點,解壓Kafka軟體包。

    EMR-5.16.0(EMR 5.x系列)之前的版本

    ssh core-1-1
    sudo su - kafka
    cd /opt/apps/KAFKA/
    
    #建立目錄並解壓檔案。
    sudo mkdir kafka-2.13-3.6.1-1.0.0
    
    sudo chown kafka:hadoop kafka-2.13-3.6.1-1.0.0
    tar xvf kafka-2.13-3.6.1-1.0.0.tar.gz

    EMR-3.50.0(EMR 3.x系列)之前的版本

    ssh core-1-1
    sudo su - kafka
    cd /opt/apps/KAFKA/
    
    #建立目錄並解壓檔案。
    sudo mkdir kafka-2.12-2.4.1-1.1.5
    
    sudo chown kafka:hadoop kafka-2.12-2.4.1-1.1.5
    tar xvf kafka-2.12-2.4.1-1.1.5.tar.gz
  5. 執行以下命令,建立link檔案。

    EMR-5.16.0(EMR 5.x系列)之前的版本

    sudo rm -f kafka-current
    sudo ln -s /opt/apps/KAFKA/kafka-2.13-3.6.1-1.0.0 kafka-current

    EMR-3.50.0(EMR 3.x系列)之前的版本

    sudo rm -f kafka-current
    sudo ln -s /opt/apps/KAFKA/kafka-2.12-2.4.1-1.1.5 kafka-current
  6. 在EMR控制台Kafka服務的狀態頁簽,重啟當前Core節點的KafkaBroker組件。

    image

    重要

    此處無需重啟整個Kafka服務,只需重啟當前升級節點的KafkaBroker即可。

  7. 等待重啟完成後,請確認core-1-1節點的Kafka服務正常後,再進行下一步操作。

  8. 重複步驟3~步驟7,替換當前叢集所有Core節點的Kafka軟體包。

Kafka(僅對存量使用者開放)

  1. 請確認當前叢集中的Kafka版本是否為2.4.1(可通過查看/usr/lib/kafka-current目錄是否連結到kafka-2.12.-2.4.1-xxx的目錄來確認)。

    • 是:下載修複漏洞後的Kafka軟體包。

    • 否:無需修複。

  2. 登入叢集的Master節點,並將上一步驟中下載的軟體包放在hadoop使用者的/usr/lib/目錄下。

    登入叢集詳情,請參見登入叢集

  3. 執行以下命令,將安裝包複製到worker-1-1節點。

    su - hadoop
    scp /usr/lib/kafka-2.12-2.4.1-1.1.5.tar.gz work-1-1:/tmp/
    ssh worker-1-1
    sudo cp /tmp/kafka-2.12-2.4.1-1.1.5.tar.gz /usr/lib/
  4. 執行以下命令,登入worker-1-1節點,解壓Kafka軟體包。

    su - hadoop
    ssh work-1-1
    sudo su - kafka
    sudo mkdir kafka-2.12-2.4.1-1.1.5
    sudo chown kafka:hadoop kafka-2.12-2.4.1-1.1.5
    tar xvf kafka-2.12-2.4.1-1.1.5.tar.gz
  5. 執行以下命令,建立link檔案。

    cd /usr/lib/
    sudo rm -f kafka-current
    sudo ln -s /usr/lib/kafka-2.12-2.4.1-1.1.5 kafka-current
  6. 在EMR控制台Kafka服務的狀態頁簽,重啟當前Core節點的KafkaBroker組件。

    重要

    此處無需重啟整個Kafka服務,只需重啟當前升級節點的KafkaBroker即可。

  7. 等待重啟完成後,請確認worker-1-1節點的Kafka服務正常後,再進行下一步操作。

  8. 重複步驟3~步驟7,替換當前叢集所有Kafka節點的Kafka軟體包。

(可選)後續營運

如果叢集後續需要擴容Kafka Broker,則可以按照上述步驟對新增的Core節點進行修複操作。另外,您也可以利用EMR叢集指令碼功能,在擴容過程中對新增節點進行漏洞修複。

  1. 上傳Kafka軟體包到OSS控制台,詳情請參見簡單上傳

    例如,將軟體包kafka-2.12-2.4.1-1.1.5.tar.gz上傳到oss://emr-kafka-software/下。

  2. 製作指令碼upgrade_kafka_software.sh,並將其上傳到OSS,以供後續添加引導操作時使用。

    #!/bin/bash
    sudo su - kafka
    
    #upgrade_kafka_software.sh
    #pls update the vars before use:
    #KAFKA_HOME,OSS_HOST,OSS_AK,OSS_SK,OSS_DIR,OSS_FILE
    KAFKA_HOME="/opt/apps/KAFKA"
    OSS_HOST=<yourEndPoint>
    OSS_AK=<yourAccessKeyId>
    OSS_SK=<yourAccessKeySecret>
    #yourOssDir, e.g.:emr-kafka-software
    OSS_DIR=<yourOssDir>
    #change to your kafka version
    OSS_FILE=<yourOssFile>
    
    if [ -f ${KAFKA_HOME}/${OSS_FILE} ]; then
     echo "file exist, no action to do"
     exit 0
    fi
    
    sudo /usr/local/bin/ossutil64 -i $OSS_AK -k $OSS_SK -e $OSS_HOST cp oss://${OSS_DIR}/${OSS_FILE} ${KAFKA_HOME}/${OSS_FILE}
    
    cd ${KAFKA_HOME}
    #change to your kafka version
    sudo mkdir kafka-2.12-2.4.1-1.1.5
    #change to your kafka version
    sudo chown kafka:hadoop kafka-2.12-2.4.1-1.1.5
    tar xvf kafka-2.12-2.4.1-1.1.5.tar.gz
    
    sudo rm -f kafka-current
    sudo ln -s /opt/apps/KAFKA/kafka-2.12-2.4.1-1.1.5 kafka-current
    
    exit 0

    涉及以下參數,請根據實際情況替換。

    說明

    建立的新目錄名稱應與Kafka軟體包名稱相對應。在本樣本中,建立的新目錄名稱為kafka-2.12-2.4.1-1.1.5,您可以根據實際情況進行替換。

    參數

    說明

    KAFKA_HOME

    Kafka軟體包的存放目錄。

    OSS_HOST

    阿里雲OSS(Object Storage Service服務)的內網地址。例如,oss-cn-hangzhou-internal.aliyuncs.com。

    OSS_AK

    阿里雲OSS的AccessKey ID和AccessKey Secret。

    建立和查看AccessKey操作詳情,請參見建立AccessKey

    OSS_SK

    OSS_DIR

    阿里雲OSS Bucket中的目錄路徑,請替換為您實際存放Kafka安裝包所在的目錄。例如,oss://emr-kafka-software/

    OSS_FILE

    阿里雲OSS上Kafka安裝包的檔案名稱,請替換為您下載的具體Kafka版本的壓縮包名稱。例如,kafka-2.12-2.4.1-1.1.5.tar.gz。

  3. 添加引導指令碼。

    在EMR控制台添加引導操作,詳情請參見管理引導操作

    參數

    說明

    指令碼位置

    選擇upgrade_kafka_software.sh指令碼的位置。

    執行範圍

    選擇節點群組,勾選emr-core

    執行時間

    選擇組件安裝前

相關文檔

叢集擴容詳情,請參見擴容叢集