【続報】Apache Log4jの任意のコード実行の脆弱性(CVE-2021-44228)について(SOS JobScheduler)

2021/12/16 更新

JPCERT/CCよりApache Log4jの任意のコード実行の脆弱性(CVE-2021-44228)に関する注意喚起が更新されCVE-2021-45046について追記されました。

特定の構成において不正なJNDI検索パターンを入力値とする場合にサービス運用妨害(DoS)が生じる可能性があることが判明し、Message Lookup機能が削除され、JNDIへのアクセスがデフォルトで無効になりました。この問題にはCVE-2021-45046が採番されています

llog4j 2.15及び下記対策は不完全であり、log4j 2.16へのアップデートが推奨されています。
(1)Log4jを実行するJava仮想マシンを起動時に「log4j2.formatMsgNoLookups」というJVMフラグオプションを「true」に指定する 例: -Dlog4j2.formatMsgNoLookups=true
(2)環境変数「LOG4J_FORMAT_MSG_NO_LOOKUPS」を「true」に設定する。

JobSchedulerの回避策も更新されましたので、以下をご確認ください。
https://change.sos-berlin.com/browse/JOC-1184

https://change.sos-berlin.com/browse/JOC-1186

2021/12/14

SOS社では現在上記修正版を含んだ緊急リリース(V.1.13.10, V.2.2.0)を作成中であり、2021/12/24に公開予定です。
回避策が更新されましたので、以下をご参照ください。
https://change.sos-berlin.com/browse/JOC-1184

2021/12/16 更新

以下の対策は不完全であるため、log4j 2.16へのアップデートが推奨されています。

V.1.13系について回避策には以下の2通りの方法があります。JS7については上記リンクをご参照ください。

(1)Log4jを実行するJava仮想マシンを起動時に「log4j2.formatMsgNoLookups」というJVMフラグオプションを「true」に指定する

例: -Dlog4j2.formatMsgNoLookups=true

  • マスター:SCHEDULER_DATA/config/factory.iniを編集し
[java]
options =に、-Dlog4j2.formatMsgNoLookups=true を追加してマスター再起動

再起動後にscheduler.logのJava options: に[-Dlog4j2.formatMsgNoLookups=true]が表示されればOK

  • エージェント:一旦停止し、
$ SCHEDULER_HOME/bin/agent_<port>.sh | .cmd   start -java-options=-Dlog4j2.formatMsgNoLookups=true

で再起動、systemd service などで自動起動設定している場合は、ExecStart=のコマンドに-java-options=-Dlog4j2.formatMsgNoLookups=trueを追加して、サービスリスタート

  • JOCコックピット:
Linuxの場合/etc/default/joc、
Windowsの場合 、レジストリ
HKLM\SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\sos_joc\Parameters\Java

を編集し、JAVA_OPTIONS=に-Dlog4j2.formatMsgNoLookups=trueを追加して、サービス再起動

参考:https://kb.sos-berlin.com/display/PKB/JOC+Cockpit+-+Installation#JOCCockpit-Installation-JavaOptionsforJetty

(2)Log4jライブラリを対策済みの2.16に入れ替える

  • マスター
    • 1.13.3
    • 以下ファイルを削除: 
      • SCHEDULER_HOME/lib/3rd-party
        • log4j-api-2.13.0.jar
        • log4j-core-2.13.0.jar
      • SCHEDULER_HOME/lib/log/log4j
        • log4j-slf4j-impl-2.13.0.jar
    • 1.13.4 to 1.13.8
    • 以下ファイルを削除:  
      • SCHEDULER_HOME/lib/3rd-party
        • log4j-api-2.13.2.jar
        • log4j-core-2.13.2.jar
      • SCHEDULER_HOME/lib/log/log4j
        • log4j-slf4j-impl-2.13.2.jar
    •  1.13.9
    • 以下ファイルを削除:  
      • CHEDULER_HOME/lib/3rd-party
        • log4j-api-2.14.0.jar
        • log4j-core-2.14.0.jar
      • SCHEDULER_HOME/lib/log/log4j
        • log4j-slf4j-impl-2.14.0.jar
    • 全バージョン
    • 以下ファイルをコピー: 
      •  SCHEDULER_HOME/lib/3rd-party
        • log4j-api-2.16.0.jar
        • log4j-core-2.16.0.jar
      • SCHEDULER_HOME/lib/log/log4j
        • log4j-slf4j-impl-2.16.0.jar
  • エージェント
    • 1.13.3
    • 以下ファイルを削除:   
      • SCHEDULER_HOME/lib/3rd-party
        • log4j-api-2.13.0.jar
        • log4j-core-2.13.0.jar
      • SCHEDULER_HOME/lib/log/log4j
        • log4j-slf4j-impl-2.13.0.jar
    • 1.13.4 to 1.13.8
    • 以下ファイルを削除:   
      • SCHEDULER_HOME/lib/3rd-party
        • log4j-api-2.13.2.jar
        • log4j-core-2.13.2.jar
      • SCHEDULER_HOME/lib/log/log4j
        • log4j-slf4j-impl-2.13.2.jar
    • 1.13.9
    • 以下ファイルを削除:   
      • SCHEDULER_HOME/lib/3rd-party
        • log4j-api-2.14.0.jar
        • log4j-core-2.14.0.jar
      • SCHEDULER_HOME/lib/log/log4j
        • log4j-slf4j-impl-2.14.0.jar
    • 全バージョン
    • 以下ファイルをコピー:
      • SCHEDULER_HOME/lib/3rd-party
        • log4j-api-2.16.0.jar
        • log4j-core-2.16.0.jar
      • SCHEDULER_HOME/lib/log/log4j
        • log4j-slf4j-impl-2.16.0.jar
  • JOCコックピット