Apache Software Foundationは12月14日(米国時間)、Java用のログングライブラリApache Log4jの最新版となる「Apache Log4j 2.16.0」をリリースした。Apache Log4j 2.x(以下、Log4j 2)には極めて緊急度の高いリモートコード実行の脆弱性「CVE-2021-44228」が報告されており、バージョン2.16.0にはこの脆弱性への対応が含まれている。CVE-2021-44228への対応としては同12月6日にバージョン 2.15.0がリリースされているが、対策が不十分だったとして追加の修正が行われたのが2.16.0になる。

CVE-2021-44228の脆弱性は、Log4j 2が動作するJavaアプリケーションに対してリモートの第三者が任意のコードを実行することを可能にするもので、「Log4Shell」とも呼ばれている。脆弱性の深刻度を表すCVSS v3のベーススコアは最高値の10.0が付けられており、できる限り早急に対処する必要がある。

米CISA、Apache Log4j 2の脆弱性に関するガイダンスページ開設 | TECH+

これに対してバージョン2.15.0では、原因となっているMessage Lookup機能をデフォルトで無効に設定した上で、有効にした場合でもホワイトリストメカニズムによって明示的に許可されたホストのみ利用できるように変更が加えられた。また、バージョンアップできない場合の緩和策として、システムプロパティまたは環境変数の設定を変更する方法が提示されていた。

しかしその後の調査で、これらの対策は特定のデフォルト以外の構成では不完全であることが判明したという。攻撃者は、これらの対策を回避する入力データを作成して、対象のシステムにおいてサービス運用妨害(DoS)状態を引き起こすことができる。この新たな問題に対応するために、バージョン2.16.0ではMessage Lookup機能そのものが削除され、さらにデフォルトでJNDIへのアクセスを無効にするように設定された。変更の内容やこれまでの経緯は、以下のリリースノートにまとめられている。

Log4j – Apache Log4j Security Vulnerabilities

  • Log4j 2.16.0およびLog4j 2.12.2のリリースノート

    Log4j 2.16.0およびLog4j 2.12.2のリリースノート

このバージョン2.15.0の問題は、新たに「CVE-2021-45046 」の追跡番号が割り当てられている。深刻度を表すCVSS v3のベーススコアは3.7で緊急性は高くないとされてはいるものの、各アプリケーションへの影響を精査した上で、できるだけ早くアップデートを適用することが推奨されている。

NVD - CVE-2021-45046

  • CVE-2021-45046の詳細

    CVE-2021-45046の詳細

なお、バージョン2.16.0はJava 8以降のみサポートしており、Java 7はサポートしていない。Java 7向けには、対策版としてバージョン2.12.2がリリースされている。