Log4Shell
Log4jは、ソフトウェア開発者がアプリケーション内のさまざまなデータをロギングできるようにするオープンソースのログフレームワークである。ログデータにはユーザー入力が含まれる場合がある。Log4jは幅広いJavaアプリケーション、特にエンタープライズのソフトウェアで利用されている。もともとは2001年にCeki Gülcüによって書かれ、現在はApache Software FoundationのApache Logging Servicesの一部となっている。
この脆弱性の修正は、脆弱性が公開される3日前の2021年12月6日に、Log4jバージョン2.15.0-rc1でリリースされた。修正にはルックアップに使用できるサーバーとプロトコルの制限が含まれ、複数のシステムプロパティを使用して設定できる。修正は、システムプロパティlog4j2.formatMsgNoLookupsを置き換えるものである。2.10.0以降のバージョンでは、脆弱性を緩和するためにlog4j2.formatMsgNoLookupsをtrueに設定することが推奨されている。2.10.0以前のバージョンでは、クラスorg.apache.logging.log4j.core.lookup.JndiLookupをclasspathから削除する必要がある。
さらに、バージョン2.16.0以降では、JNDIを使用するすべての機能はデフォルトで無効になる。
新しいバージョンのJava Runtime Environment(JRE)は、リモートコードがデフォルトでロードされないようにブロックすることでこの脆弱性を緩和できるが、特定のアプリケーションにはまだ他の攻撃ベクターが存在する。脆弱性のあるlog4jのバージョンの発見を助けるためにいくつかの手法とツールが公開されている。