全部产品
Search
文档中心

E-MapReduce:Pengumuman Kerentanan | Kerentanan RCE di Apache Log4j 2

更新时间:Jul 02, 2025

Alibaba Cloud Computing Co., Ltd. baru-baru ini menemukan kerentanan eksekusi kode jarak jauh (RCE) di Apache Log4j 2 dan melaporkannya kepada Apache. Topik ini menjelaskan dampak dari kerentanan tersebut serta menyediakan solusi untuk mengatasinya.

Dampak

Layanan yang terpengaruh dalam kluster E-MapReduce (EMR) mencakup Hive, Presto, Impala, Druid, Flink, Solr, Ranger, Storm, Oozie, Spark, dan Zeppelin. Spark dan Zeppelin terpengaruh karena memiliki dependensi pada Hive.

Solusi

Ganti file JAR Log4j 2 kluster EMR Anda dengan versi 2.17.2. Selain itu, atur parameter log4j2.formatMsgNoLookups untuk layanan Hive dan Spark menjadi true untuk menonaktifkan fitur pencarian JNDI. Untuk informasi lebih lanjut tentang prosedur, lihat Prosedur.

Perhatikan hal-hal berikut terkait solusi ini:

  • Solusi ini berlaku untuk EMR V3.38.2 dan versi minor sebelumnya, EMR V5.4.2 dan versi minor sebelumnya, serta EMR V4.X. Pada versi minor setelah EMR V3.38.2 dan versi minor setelah V5.4.2, kerentanan telah diperbaiki, sehingga tidak diperlukan operasi perbaikan tambahan.

  • Setelah menerapkan solusi ini, Anda harus memulai ulang layanan yang terpengaruh di kluster Anda.

  • Skrip yang digunakan untuk memperbaiki kerentanan tidak berdampak pada layanan online. Namun, kami tetap menyarankan Anda menjalankan skrip selama jam-jam sepi karena Anda harus memulai ulang layanan terkait setelah menjalankan skrip.

Prosedur

Perbaiki kerentanan untuk kluster EMR

  1. Unduh paket patch patches-log4j.tar.gz.

  2. Masuk ke node master kluster EMR Anda dan letakkan paket yang diunduh di Langkah 1 di direktori home pengguna emr-user atau hadoop.

  3. Jalankan perintah berikut untuk beralih ke pengguna emr-user atau hadoop dan dekompresi paket:

    • Kluster DataLake, Dataflow, OLAP, DataServing, atau kluster kustom

      su emr-user
      tar zxf patches-log4j.tar.gz
    • Kluster lainnya

      su hadoop
      tar zxf patches-log4j.tar.gz
  4. Jalankan perintah berikut untuk membuka file hosts di direktori patches. Kemudian tambahkan nama host semua node di kluster, seperti emr-header-1 dan emr-worker-1, ke file hosts. Masukkan satu nama host di setiap baris.

    cd patches
    vim hosts

    Contoh isi file:

    emr-header-1
    emr-worker-1
    emr-worker-2
    Penting

    Untuk kluster EMR V3.41 atau versi minor lebih baru, atau kluster EMR V5.7.0 atau versi minor lebih baru, format nama host node berbeda. Contoh isi file:

    core-1-1
    core-1-2
    task-1-1
    task-1-2
  5. Jalankan skrip fix.sh untuk memperbaiki kerentanan:

    ./fix.sh

    Setelah skrip dijalankan, informasi berikut akan dikembalikan:

    ### NOTICE: YOU CAN RESTORE THIS PATCH BY RUN RESTORE SCRIPT ABOVE
    $> sh ./restore.sh 20211213001755
    ### DONE

    Jika Anda ingin melakukan rollback, jalankan perintah berikut:

    ./restore.sh 20211213001755
    Catatan

    Untuk pekerjaan yang sedang berjalan di YARN, seperti pekerjaan Spark Streaming atau Flink, Anda harus melakukan restart bergulir pada YARN NodeManager setelah pekerjaan dihentikan.

  6. Mulai ulang layanan.

    Mulai ulang layanan yang terpengaruh, termasuk Hive, HDFS, Presto, Impala, Druid, Flink, Solr, Ranger, Storm, Oozie, Spark, dan Zeppelin.

    Sebagai contoh, pilih More > Restart di pojok kanan atas halaman layanan Hive untuk memulai ulang layanan Hive.

Perbaiki kerentanan untuk kluster gateway

Kluster gateway tidak mendukung masuk tanpa kata sandi dalam mode SSH. Oleh karena itu, jika Anda menggunakan kluster gateway, Anda harus mengunggah paket patch secara manual ke setiap node kluster gateway dan melakukan operasi perbaikan di setiap node.

Penting
  • Anda hanya perlu memasukkan hostname dari node eksekusi saat ini ke file hosts.

  • Kluster gateway tidak berisi layanan. Anda tidak perlu memulai ulang layanan setelah mengunggah paket patch.

Perbaiki kerentanan saat membuat kluster atau memperluas kluster yang ada

Saat membuat kluster EMR, Anda dapat menambahkan tindakan bootstrap di konsol EMR untuk memperbaiki kerentanan. Saat memperluas kluster yang ada, sistem secara otomatis memperbaiki kerentanan. Saat membuat kluster EMR, lakukan langkah-langkah berikut:

  1. Unduh paket patches-log4j.tar.gz dan file skrip bootstrap_log4j.sh, lalu unggah ke jalur Object Storage Service (OSS).

    Dalam contoh ini, paket dan file skrip diunggah ke oss://<bucket-name>/path/to/.

  2. Tambahkan tindakan bootstrap di konsol EMR. Untuk informasi lebih lanjut, lihat Gunakan tindakan bootstrap untuk mengeksekusi skrip.

    Di kotak dialog Add Bootstrap Actions, konfigurasikan parameter.

    Parameter

    Deskripsi

    Name

    Nama tindakan bootstrap yang ingin Anda tambahkan. Sebagai contoh, Anda dapat mengatur parameter ini menjadi fixlog4jvulnerability.

    Script Address

    Jalur OSS tempat file skrip berada.

    Anda harus menentukan parameter ini dalam format oss://**/*.sh. Dalam contoh ini, jalurnya adalah oss://<bucket-name>/path/to/bootstrap_log4j.sh.

    Parameter

    Parameter skrip tindakan bootstrap. Parameter ini digunakan untuk menentukan nilai variabel yang dirujuk dalam skrip.

    Dalam contoh ini, parameternya adalah oss://<bucket-name>/path/to/patches-log4j.tar.gz.

    Execution Scope

    Pilih Cluster.

    Execution Time

    Pilih After Component Startup.

    Execution Failure Policy

    Klik Proceed.

  3. Setelah membuat kluster, mulai ulang layanan HDFS, Hive, Presto, Impala, Druid, Flink, Solr, Ranger, Storm, Oozie, Spark, dan Zeppelin. Jika Anda memperluas kluster, Anda hanya perlu memulai ulang layanan terkait yang diterapkan pada node yang baru ditambahkan.