💀

Log4j 2.14.1の脆弱性対応

2021/12/10に公開

Log4j で強めな脆弱性が発見されました。
詳細は省きますが、ある条件可で任意のコードが実行できるような脆弱性です。
mavenのリポジトリによってはまだ2.15.0のバージョンが上がっていないようで、少し手こずったので記事にします。 (2021/12/10 13時時点)
※自分が所属するログラスでも依存しているライブラリでしたが、今はすでに修正とリリースが完了しています。

https://www.cyberkendra.com/2021/12/worst-log4j-rce-zeroday-dropped-on.html

影響ライブラリと影響バージョンは log4j-apilog4j-core の 2.0 <= Apache log4j2 <= 2.14.1 です。
対応としては 2.15.0 に上げればいいそうです。

しかし、2021/12/10 13時現在Mavenのサイトでは2.15.0が上がっていないように見えます。

https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core
https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api

しかし、こちらの repo1.maven.orgのリポジトリにはあるそうで、素直に2.15.0を指定すればいいとういことになりました。

https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-api/2.15.0/
https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-core/2.15.0/

以下はgradleプロジェクトの対応策です。

gradle
dependencies {
    ...
    implementation("org.apache.logging.log4j:log4j-api:2.15.0")
    implementation("org.apache.logging.log4j:log4j-core:2.15.0")
    ...
}

こうすることで、依存ライブラリで 2.14.0のライブラリに依存していてもクラスパスがプロジェクト全体に解決され 2.15.0のライブラリが採択されるようになりました。

$ gradlew dependencies
-> 
org.apache.logging.log4j:log4j-api:2.14.1 -> 2.15.0

解決!

もし対応策が間違えていれば、すぐ修正しますのでお教えいただけると幸いです。

https://twitter.com/Yuiiitoto

Discussion