任意のコード実行の脆弱性を修正した「Apache Log4j 2.16」が公開

 Apache Log4j開発チームは12月13日、Javaロギングツールの最新版「Apache Log4j 2.16.0」を公開した。遠隔から任意のコードを実行されるおそれのある脆弱性(CVE-2021-44228)とそれに続く脆弱性(CVE-2021-45046)を修正するものとなり、アップデートを推奨している。

 Log4jはThe Apache Logging Services Projectが開発するJavaロギングツールで、アプリケーションの振る舞いをロギングするフレームワーク。Log4j 1系をLogbackなどで大きく改善したLog4j 2が現行ブランチとなる。  Log4jはJNDI機能における脆弱性(CVE-2021-44228)を12月10日に報告、以來影響力が大きいことから話題となっていた。

 最新のLog4j 2.16.0は、セキュリティ脆弱性CVE-2021-45046を修正したリリースとなる。CVE-2021-45046はバージョン2.12.7でJava 7について修正されており、本バージョンではJava8以降に対応した。

 開発チームによると、12月6日に公開したバージョン2.15でのCVE-2021-44228の修正が不完全で、一部のデフォルトではない設定が影響を受ける状態だった。悪用されると、ロギング設定がPattern Layoutを用いる場合、Context LookupまたはThread Context Mapパターンを使うThread Context Map(MDC)インプットデータをコントロールされてしまい、JNDI Lookupパターンを使って悪意あるインプットデータを作成し、これがDDoS攻撃を招く恐れがあるという。バージョン2.15ではJNDI LDAP参照をデフォルトでローカルホストに制限していた。

 バージョン2.16では、Message Lookup機能を削除し、JNDIへのアクセスについてはデフォルトで無効にした。プロトコルのデフォルトをjava、Idap、Idapsのみに制限し、IdapプロトコルがJavaプリミティブ型にのみアクセスするように制限した。  Apache Log4j 2.16はJava 8以上が必要、プロジェクトのWebサイトより入手できる。

Apache Log4
https://logging.apache.org/log4j/2.x/index.html