Trusted Design

CVE-2021-45046 の詳細

CVEの情報

説明:
It was found that the fix to address CVE-2021-44228 in Apache Log4j 2.15.0 was incomplete in certain non-default configurations. This could allows attackers with control over Thread Context Map (MDC) input data when the logging configuration uses a non-default Pattern Layout with either a Context Lookup (for example, $${ctx:loginId}) or a Thread Context Map pattern (%X, %mdc, or %MDC) to craft malicious input data using a JNDI Lookup pattern resulting in an information leak and remote code execution in some environments and local code execution in all environments. Log4j 2.16.0 (Java 8) and 2.12.2 (Java 7) fix this issue by removing support for message lookup patterns and disabling JNDI functionality by default.

CVE更新日: 2021-12-14 19:15:07.733000

CVSSバージョン: 3.1

CVSSスコア: 9.0

KEVの情報

KEV更新日: 2023-05-01

EPSSの情報

EPSSは脆弱性が今後30日以内に悪用される確率を予測するスコアリングシステムで、FIRST(Forum of Incident Response and Security Teams)が提供しています。
EPSSのスコアが高いということは、攻撃されるリスクが高いことを意味するので、早めの対策が必要です。

EPSSスコア: 0.999770000

EPSS更新日: 2026-10-16 00:00:00

SSVCの情報

SSVCはカーネギーメロン大学ソフトウェア工学研究所が提案する脆弱性の評価手法です。ステークホルダーごとに脆弱性対応の優先度を決定することを支援します。
本サイトでは、CVE、KEV、EPSSの内容からExploitation(悪用状況)、Technical Impact(技術的影響)、Automatable(自動攻撃の可否)を判定します。

Exploitation: active

Technical Impact: high

Automatable: True

AIを使った解説

解説:

CVE-2021-45046は、Apache Log4jロギングライブラリにおけるリモートコード実行(RCE)の脆弱性です。これは、広く知られているLog4Shell脆弱性(CVE-2021-44228)の不完全な修正に起因します。

1. 脆弱性の概要

CVE-2021-45046は、Apache Log4j 2.15.0でCVE-2021-44228に対処するためにリリースされた修正が、特定の非デフォルト構成において不完全であったために生じました。攻撃者がThread Context Map (MDC) の入力データを制御できる場合、JNDI Lookupパターンを使用した悪意のある入力データを作成することで、情報漏えいやリモートコード実行、あるいはローカルコード実行を引き起こす可能性があります。

1.1 影響

  • リモートコード実行 (RCE): 攻撃者は、特定の非デフォルト構成で、脆弱なシステム上で任意のコードを実行できる可能性があります。
  • 情報漏えい: 悪意のあるJNDI Lookupパターンによって情報が漏えいする可能性があります。
  • サービス拒否 (DoS): 当初はサービス拒否のリスクとして認識されていましたが、後にリモートコード実行が可能であることが判明しました。

1.2 深刻度

  • CVSSv3.1 スコア: 9.0 (Critical - 緊急)
    • 当初は3.7と評価されていましたが、後にリモートコード実行が可能であることが判明し、9.0に引き上げられました。
  • CVSSv4.0 スコア: 9.0 (CRITICAL)
  • この脆弱性は「破壊的」なセキュリティ脆弱性と考えられています。

2. 対象となる環境

2.1 影響を受けるLog4jバージョン

  • Apache Log4j 2.x のバージョン 2.0-beta9 から 2.15.0 までが影響を受けます(バージョン 2.12.2 は影響を受けません)。
  • Log4j 1.x はこの脆弱性の影響を受けません。

2.2 影響を受ける設定

この脆弱性は、以下の条件がすべて満たされる場合に悪用される可能性があります。

  • リモートからアクセス可能なエンドポイント(HTTP、TCPなど、攻撃者が任意のデータを送信できるプロトコル)が存在する。
  • エンドポイントに、攻撃者が制御するデータをログに出力するログステートメントがある。
  • Log4jの設定ファイルが、Context Lookups ($${ctx:loginId}など) またはThread Context Mapパターン (%X, %mdc, %MDC) を含む非デフォルトのPattern Layoutを使用するように明示的に構成されている。

3. 影響を受けた時の兆候

  • 異常なJNDIリクエストの監視。
  • 信頼できないIPからの予期しない受信接続。
  • Javaプロセスの異常な実行。
  • アプリケーションログ内の疑わしい形式の文字列や、エクスプロイトの試みを示すフラグの検査。
  • 不正なペイロードがJSON/HTTPヘッダーまたはログに隠蔽され、実行されることでバックドアの作成やラテラルムーブメントツールが使用される可能性がある。

4. 推奨対策

4.1 本対策

  • Log4jのアップグレード:
    • Java 8以降のユーザーは、Log4j 2.16.0または2.17.0以降にアップグレードすることが強く推奨されます。Log4j 2.16.0は、メッセージルックアップパターンのサポートを削除し、JNDI機能をデフォルトで無効にすることでこの問題を修正しています。
    • Java 7ユーザーは、Log4j 2.12.2にアップグレードすることが推奨されます。
    • Log4j 2.17.1以降のバージョンでは、Log4Shell関連の脆弱性が完全に修正されています。

4.2 暫定回避策(緩和策)

  • JndiLookupクラスの削除: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class コマンドを使用して、log4j-core JARファイルから JndiLookup.class ファイルを削除します。この回避策はCVE-2021-45046に対しても有効です。
  • システムの外部接続の制限: システムから外部への接続を制限するアクセス制御を実施または強化することも有効です。
  • WAFの配置: 仮想パッチや侵入検知/防御システム (IDS/IPS) の活用、および影響を受けるアセットの隔離(インターネットから直接アクセスできない隔離されたネットワークセグメントに配置し、WAFを配置する)も推奨されます。
  • JMSAppenderの無効化: org.apache.log4j.net.JMSAppender を活用する構成済みのアペンダーを一時的に無効化することで、脆弱性の影響を軽減することを推奨します。

他に解説すべき観点

  • Log4Shellとの関連性: CVE-2021-45046は、Log4Shell (CVE-2021-44228) の不完全な修正として発見されたため、これらの脆弱性は密接に関連しています。
  • 悪用状況: 脆弱性公開後、迅速に悪用が確認され、ボットネットやクリプトマイニングマルウェアなどが拡散されました。
  • 影響を受ける可能性のあるアプリケーション: Apache Struts2、Apache Solr、Apache Druid、Apache Flink、Elasticsearch、Logstash、Apache Dubbo、Apache Kafka、Spring-boot-starter-log4j2、VMware vCenterなど、Log4jを使用する多くの一般的なアプリケーションやコンポーネントが影響を受ける可能性があります。

参照したサイト

NVDサイト

NVDでCVEの詳細を見る

戻る