Log4j2 の脆弱性情報をメモる
この手の脆弱性の扱いについても、java で構成されるアプリケーションの知識についても私は素人なので、他人が参考にする情報としてはあんまりアテにならないものになってる可能性あり。
CVE2021-44228
National Vulnerability Database (NVD) ... https://nvd.nist.gov/vuln/detail/CVE-2021-44228
Red hat Customer Portal ... https://access.redhat.com/security/cve/cve-2021-44228
Github Advisory Database ... https://github.com/advisories/GHSA-jfh8-c2jp-5v3q
声明を発表している事例
マイクラ
脆弱性の調査に関する記事
Description
column | description |
---|---|
Software | Apache Log4j2 |
Version | <=2.14.1 |
Apache Log4j2 <=2.14.1 JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints.
Log4j2 で設定、ログメッセージ、およびパラメータで使用される JDNI (Java Naming and Directory Interface, wikipedia) 機能は "エンドポイント" から保護されない。
"エンドポイント" とは、攻撃者が制御している LDAP や JNDI 関連のエンドポイントのことを指す。
JNDI とは他の外部システムに対するインタフェースを提供するもの、であるらしい。
An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled.
ログメッセージや、ログパラメータを制御できる攻撃者は、メッセージの Lookup 置換が有効な場合、 LDAP サーバーからロードされた任意のコードを実行することが可能です。
From log4j 2.15.0, this behavior has been disabled by default. In previous releases (>2.10) this behavior can be mitigated by setting system property "log4j2.formatMsgNoLookups" to “true” or by removing the JndiLookup class from the classpath (example: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class).
log4j 2.15.0 からは、この振る舞いはデフォルトで無効化されています。以前のリリース (>2.10) では、システムプロパティ log4j2.formatMsgNoLookups
を true に設定するか、クラスパスから JndiLookup
クラスを削除することで、この動作を緩和することができます。
例)
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
Java 8u121 (see https://www.oracle.com/java/technologies/javase/8u121-relnotes.html) protects against remote code execution by defaulting "com.sun.jndi.rmi.object.trustURLCodebase" and "com.sun.jndi.cosnaming.object.trustURLCodebase" to "false".
Java 8u121 では、"com.sun.jndi.rmi.object.trustURLCodebase" および "com.sun.jndi.cosnaming.object.trustURLCodebase" をデフォルトで false に設定することで、リモートコードの実行から保護しています。
セルフホストしている環境での診断に参考にできそうなリンク
Description
column | description |
---|---|
Software | Apache Log4j2 |
Version | <=2.14.1 |
Apache Log4j2 <=2.14.1 JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints.
Log4j2 で設定、ログメッセージ、およびパラメータで使用される JDNI (Java Naming and Directory Interface, wikipedia) 機能は "エンドポイント" から保護されない。
"エンドポイント" とは、攻撃者が制御している LDAP や JNDI 関連のエンドポイントのことを指す。
JNDI とは他の外部システムに対するインタフェースを提供するものであり、
An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled.
From log4j 2.15.0, this behavior has been disabled by default. In previous releases (>2.10) this behavior can be mitigated by setting system property "log4j2.formatMsgNoLookups" to “true” or by removing the JndiLookup class from the classpath (example: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class).
Java 8u121 (see https://www.oracle.com/java/technologies/javase/8u121-relnotes.html) protects against remote code execution by defaulting "com.sun.jndi.rmi.object.trustURLCodebase" and "com.sun.jndi.cosnaming.object.trustURLCodebase" to "false".