すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:セキュリティ速報 | Apache Log4j2 リモートコード実行の脆弱性

最終更新日:Aug 21, 2026

Alibaba Cloud は最近、Apache Log4j2 コンポーネントにリモートコード実行 (RCE) の脆弱性を発見し、Apache Software Foundation に報告しました。このトピックでは、この脆弱性の影響と対応する修正プランについて説明します。

影響

E-MapReduce (EMR) において、影響を受けるコンポーネントには、Hive、HDFS、Presto、Impala、Druid、Flink、Solr、Ranger、Storm、Oozie、Spark、および Zeppelin が含まれます。Spark と Zeppelin は Hive コンポーネントに依存しているため、影響を受けます。

修正プラン

お客様の EMR クラスター内にある脆弱な Log4j2 JAR ファイルをバージョン 2.17.1 に置き換え、Hive および Spark の Log4j 設定を変更して、log4j2.formatMsgNoLookups=true を設定することで JNDI Lookup 機能を無効化する必要があります。詳細な手順については、「修正手順」をご参照ください。

この修正プランには次の特徴があります。

  • EMR-3.38.2 以前、EMR-5.4.2 以前、および EMR 4.x バージョンに適用されます。この脆弱性は EMR-3.38.3 以降および EMR-5.4.3 以降では修正されています。これらのバージョンでは対応は不要です。

  • このプランを適用した後、対応するコンポーネントを再起動する必要があります。

  • 修正スクリプトは稼働中のサービスに影響を与えません。ただし、修正はコンポーネントの再起動後にのみ有効になるため、オフピーク時間にこの手順を実行することを推奨します。

修正手順

EMR クラスター

  1. patches-log4j.tar.gz をクリックして、パッチパッケージをダウンロードします。

  2. EMR クラスターのマスターノードにログインし、ステップ 1 でダウンロードしたパッチパッケージを emr-user または hadoop ユーザーの HOME ディレクトリに配置します。

  3. パッチパッケージを解凍し、emr-user または hadoop ユーザーとして次のコマンドを実行します:

    • DataLake、Dataflow、OLAP、DataServing、およびカスタムシナリオクラスターの場合:

      su emr-user
      tar zxf patches-log4j.tar.gz
    • その他のクラスターの場合:

      su hadoop
      tar zxf patches-log4j.tar.gz
  4. パッチパッケージ内の hosts ファイルを編集し、クラスター内のすべてのノードのホスト名 (emr-header-1 や emr-worker-1 など) を追加します。1 行につき 1 つのホスト名を追加してください。

    cd patches
    vim hosts

    以下は hosts ファイルの内容の例です。

    emr-header-1
    emr-worker-1
    emr-worker-2
    重要

    EMR 3.x シリーズの EMR 3.41 以降、または EMR 5.x シリーズの EMR 5.7.0 以降のクラスターでは、ホスト名の形式が変更されています。以下は hosts ファイルの内容の例です。

    core-1-1
    core-1-2
    task-1-1
    task-1-2
  5. fix.sh スクリプトを実行して、修正を適用します。

    ./fix.sh

    スクリプト実行後、次のメッセージが返されます:

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

    修正をロールバックするには、次のコマンドを実行します:

    ./restore.sh 20211213001755
    説明

    実行中の YARN ジョブ (アプリケーション)、例えば、Spark Streaming や Flink ジョブなどについては、YARN NodeManager をローリングリスタートする前にジョブを停止する必要があります。

  6. サービスを再起動します。

    脆弱性を完全に修正するには、Hive、HDFS、Presto、Impala、Druid、Flink、Solr、Ranger、Storm、Oozie、Spark、および Zeppelin を含む影響を受けるコンポーネントを再起動する必要があります。

    Hive コンポーネントを再起動するには、EMR コンソールの Hive サービスページに移動し、右上隅の More > 再起動 を選択します。

ゲートウェイクラスター

この修正手順は、パスワードレス SSH アクセスに依存しています。ゲートウェイクラスターの場合、パッチパッケージをクラスター内の各ノードに手動でアップロードし、各ノードで EMR クラスターの手順に従って修正を適用する必要があります。

重要
  • パッチパッケージの hosts ファイルには、現在のノードの hostname のみを入力する必要があります。

  • ゲートウェイクラスターではコンポーネントプロセスが実行されていないため、パッチパッケージのアップロード後にサービスを再起動する必要はありません。

新規クラスターとスケールアウト

EMR コンソールでブートストラップアクションを追加することで、EMR クラスターの作成時または既存クラスターのスケールアウト時に、脆弱性を自動的に修正できます。次の手順に従ってください:

  1. patches-log4j.tar.gz と bootstrap_log4j.sh をクリックして、パッチパッケージとブートストラップスクリプトをダウンロードし、Object Storage Service (OSS) にアップロードします。

    例えば、ファイルの OSS パスは oss://<bucket-name>/path/to/patches-log4j.tar.gz、oss://<bucket-name>/path/to/bootstrap_log4j.sh です。

  2. EMR コンソールでブートストラップアクションを追加します。詳細については、「ブートストラップアクションの管理」をご参照ください。

    Add Bootstrap Action ダイアログボックスで、パラメータを設定します。

    パラメータ

    説明

    Name

    ブートストラップアクションの名前。例: fix-log4j-vulnerability

    Script Address

    スクリプトの OSS ロケーション。

    スクリプトパスは oss://**/*.sh 形式で指定します。この例では、oss://<bucket-name>/path/to/bootstrap_log4j.sh を使用します。

    Parameter

    ブートストラップアクションスクリプトのパラメータ。スクリプト内で参照される変数の値を指定します。

    この例では、oss://<bucket-name>/path/to/patches-log4j.tar.gz を使用します。

    Execution Scope

    Cluster を選択します。

    [実行時間]

    After Component Startup を選択します。

    [Execution Failure Policy]

    Proceed を選択します。

  3. 既存のクラスターをスケールアウトする場合、新しいノード上のコンポーネントのみを再起動する必要があります。新しいクラスターを作成する場合は、HDFS、Hive、Presto、Impala、Druid、Flink、Solr、Ranger、Storm、Oozie、Spark、および Zeppelin などのコンポーネントを再起動する必要があります。