公開日:2021/12/13 最終更新日:2023/07/03

JVNVU#96768815
Apache Log4jにおける任意のコードが実行可能な脆弱性
緊急

概要

Log4jにはJNDI Lookup機能による外部入力値の検証不備に起因して任意のJavaコードを実行可能な脆弱性が存在します。

影響を受けるシステム

  • Apache Log4j-core 2.0-beta9から2.12.1より前のバージョン、および2.13.0から2.15.0より前のバージョン
Log4j 1.x系については、開発者により、Lookup機能が含まれておらず外部入力値由来のクラス情報がデシリアライズされないため影響を受けないという指摘がなされています。ただし、Log4j 1.xはすでに開発およびサポートが終了しているため、後継製品への移行を強く推奨します。

詳細情報

The Apache Software Foundationが提供するLog4jは、Javaベースのロギングライブラリです。Log4jには、ログに記載された文字列から一部の値を変数として評価するLookup機能が実装されています。そのLookup機能の内、JNDI Lookup機能を悪用することにより、ログに含まれる外部のURLもしくは内部パスからJavaのクラス情報をデシリアライズして実行してしまう問題(CWE-20, CVE-2021-44228)が発見されました。これにより、遠隔の攻撃者が細工した文字列を脆弱なシステムのログに記載させ、結果として任意のJavaコードをシステムに実行させることが可能です。

想定される影響

遠隔の攻撃者により細工された文字列をLog4jがログに記録することにより、システム上で任意のJavaコードが実行される可能性があります。

対策方法

アップデートする
開発者により、本脆弱性を修正した以下のバージョンが提供されています。開発者が提供する情報をもとに、最新版にアップデートしてください。なお、本アップデートでは、Log4jのLookup機能が削除されており、JNDIへのアクセスがデフォルトで無効化されています。

  • Java 8およびそれ以降のユーザ向け修正版
    • Log4j 2.17.1
  • Java 7のユーザ向け修正版
    • Log4j 2.12.4
  • Java 6のユーザ向け修正版
    • Log4j 2.3.2
開発者は当初、本脆弱性に対する修正版として2.15.0をリリースしていましたが、特定の構成において任意のコード実行が行われる可能性があることが判明し、2021年12月13日に、Lookup機能を削除した上でJNDI機能そのものをデフォルトで無効化した2.16.0および2.12.2が改めてリリースされました。この問題に対してはCVE-2021-45046が採番されています。

【2021/12/20 追記】
2021年12月18日、開発者はLog4j 2.0-alpha1から2.16.0までのバージョンにおいて、再帰的(self-referential)なLookupを行う設定下において、サービス運用(DoS)が行われる脆弱性が新たに発見されたとして、バージョン2.17.0をリリースしました。この脆弱性に対してはCVE-2021-45105が採番されています。

【2021/12/22 追記】
2021年12月21日、開発者は一連の脆弱性を修正したバージョンとして、Java 6ユーザ向けに2.3.1を、Java 7ユーザ向けに2.12.3をリリースしました。

【2022/01/04 追記】
2021年12月28日、開発者はLog4j2 2.0-beta7から2.17.0(2.3.2および2.12.4を除く)において、攻撃者がログ出力設定を変更できる場合に限り任意のコード実行が行われる可能性があるとして、Log4j 2.17.1、2.12.4、2.3.2をリリースしました。この修正では、JNDIのデータソースをJavaプロトコルに制限する変更が行われました。この脆弱性に対してはCVE-2021-44832が採番されています。

ワークアラウンドを実施する
以下の回避策を適用することにより、本脆弱性の悪用を防ぐことが可能です。
  • JndiLookupクラスをクラスパスから除外する
    • 例: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
    • この回避策はCVE-2021-45046に対しても有効です
  • Log4jを実行するJava仮想マシンを起動する際に log4j2.formatMsgNoLookupstrue に設定する(Log4j 2.10およびそれ以降のバージョンが対象)
    • 例: -Dlog4j2.formatMsgNoLookups=true
    • この回避策はCVE-2021-45046に対して有効ではありません
  • 環境変数 LOG4J_FORMAT_MSG_NO_LOOKUPStrue に設定する(Log4j 2.10およびそれ以降のバージョンが対象)
    • この回避策はCVE-2021-45046に対して有効ではありません
また、本脆弱性の影響を軽減するため、システムから外部への接続を制限するアクセス制御を実施または強化することも有効です。

ベンダ情報

ベンダ ステータス ステータス
最終更新日
ベンダの告知ページ
BizMobile株式会社 該当製品無し 2021/12/15
Intel Corporation 該当製品あり 2021/12/21 Intel Corporation の告知ページ
Siemens AG 該当製品あり 2022/02/09 Siemens AG の告知ページ
サイボウズ株式会社 該当製品無し 2021/12/16 サイボウズ株式会社 の告知ページ
サイレックス・テクノロジー株式会社 該当製品無し 2022/01/13 サイレックス・テクノロジー株式会社 の告知ページ
トレンドマイクロ株式会社 該当製品あり 2021/12/27 トレンドマイクロ株式会社 の告知ページ
三菱電機株式会社 該当製品あり 2022/03/29 三菱電機株式会社 の告知ページ
古河電気工業株式会社 該当製品無し 2021/12/21
日本ワムネット株式会社 該当製品無し 2021/12/21
日本電気株式会社 該当製品あり 2023/06/30
日立 該当製品あり(調査中) 2022/01/05
東芝デジタルソリューションズ株式会社 該当製品あり 2022/02/14 東芝デジタルソリューションズ株式会社 の告知ページ
株式会社ソリトンシステムズ 該当製品無し 2021/12/21 株式会社ソリトンシステムズ の告知ページ
横河電機株式会社 該当製品あり 2022/02/18 横河電機株式会社 の告知ページ
Sky株式会社 該当製品無し 2021/12/22 Sky株式会社 の告知ページ
ベンダ リンク
The Apache Software Foundation Apache Log4j Security Vulnerabilities
Johnson Controls Product Security Advisories:JCI-PSA-2022-01(PDF)

参考情報

  1. apache/logging-log4j2
    Restrict LDAP access via JNDI #608
  2. LunaSec
    Log4Shell: RCE 0-day exploit found in log4j 2, a popular Java logging package
  3. CERT/CC Vulnerability Note VU#930724
    Apache Log4j allows insecure JNDI lookups
  4. ICS Advisory (ICSA-22-034-01)
    Sensormatic PowerManage

JPCERT/CCからの補足情報

JPCERT/CCによる脆弱性分析結果

謝辞

関連文書

JPCERT 緊急報告 JPCERT-AT-2021-0050
Apache Log4jの任意のコード実行の脆弱性(CVE-2021-44228)に関する注意喚起
JPCERT REPORT
CERT Advisory
CPNI Advisory
TRnotes
CVE
JVN iPedia

更新履歴

2021/12/14
[対策方法]を更新しました
2021/12/14
Siemens AGのベンダステータスを更新しました
2021/12/15
BizMobile株式会社のベンダステータスが更新されました
2021/12/15
[影響を受けるシステム]、[対策方法]、[ベンダ情報]、[参考情報]を更新しました
2021/12/16
トレンドマイクロ株式会社のベンダステータスが更新されました
2021/12/16
サイボウズ株式会社のベンダステータスが更新されました
2021/12/17
Siemens AGのベンダステータスを更新しました
2021/12/17
[対策方法]を更新しました
2021/12/20
Siemens AGのベンダステータスを更新しました
2021/12/20
[対策方法]を更新しました
2021/12/21
Siemens AGのベンダステータスを更新しました
2021/12/21
Intel Corporationのベンダステータスを更新しました
2021/12/21
古河電気工業株式会社のベンダステータスが更新されました
2021/12/21
日本ワムネット株式会社のベンダステータスが更新されました
2021/12/21
株式会社ソリトンシステムズのベンダステータスが更新されました
2021/12/22
[対策方法]を更新しました
2021/12/22
Siemens AGのベンダステータスを更新しました
2021/12/22
Sky株式会社のベンダステータスが更新されました
2021/12/24
[対策方法]の「ワークアラウンドを実施する」の記載内容を更新しました
2021/12/27
トレンドマイクロ株式会社のベンダステータスが更新されました
2022/01/04
[対策方法]の「アップデートする」の記載内容を更新しました
2022/01/04
Siemens AGのベンダステータスを更新しました
2022/01/06
日立のベンダステータスが更新されました
2022/01/12
サイレックス・テクノロジー株式会社のベンダステータスが更新されました
2022/01/13
サイレックス・テクノロジー株式会社のベンダステータスが更新されました
2022/02/04
[ベンダ情報]および[参考情報]を更新しました
2022/02/09
Siemens AGのベンダステータスを更新しました
2022/02/14
東芝デジタルソリューションズ株式会社のベンダステータスが更新されました
2022/02/18
横河電機株式会社のベンダステータスが更新されました
2022/03/29
三菱電機株式会社のベンダステータスが更新されました
2022/04/18
日本電気株式会社のベンダステータスが更新されました
2022/09/07
日本電気株式会社のベンダステータスが更新されました
2022/12/13
日本電気株式会社のベンダステータスが更新されました
2023/07/03
日本電気株式会社のベンダステータスが更新されました