話題になっていたので調べてみました。
脆弱性の内容について
NISTが出している脆弱性情報を参照しました。
https://nvd.nist.gov/vuln/detail/CVE-2021-44228
大まかな特徴としては以下
- Log4j2 <=2.14.1 までのバージョンで起きる脆弱性である。
- JNDI Lookupの機能を使ってログメッセージからLDAPのプロトコルを使って外部から悪意のあるプログラムが実行される可能性がある。
- 実行できるプログラムの内容は特に制限がない
なので、非常に重大なセキュリティホールとして発表されています。
脆弱性に対する対策
Log4jのバージョンによって対策方法が色々あるみたいです。
・Log4jのバージョンを最新バージョンにアップデートする
Apacheのコミュニティからすでにパッチ修正がかかったバージョンがリリースされているので、アプリケーションの仕様などでLog4jのバージョンを固定する必要がなければ最新版へアップデートすることで対策できます。
Log4j – Apache Log4j Security Vulnerabilities
・2.14-2.10までのバージョンの場合
Java起動時の変数でlog4j2.formatMsgNoLookups=true
に設定することで問題となっているJNDILookupの機能を無効化できます。
・2.10以前の場合(2.0-beta9 to 2.10.0)
設定できる定数がないためJNDILookupのクラスファイルを削除が必要です。
以下コマンドが出されているのでJarから対象クラスファイルを削除方法が提供されています。
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
その他関連情報
JNDI is 何?
JNDIは “Java Naming and Directory Interface”というAPIの略語でJavaが持つ名前空間を検索する際に使うもの
JNDIがあることでJavaからLDAPやDNSなどのプロトコルを個別に実装することなく使うことができます。
第 10 章 JNDI リソース
Lesson: Overview of JNDI (The Java™ Tutorials > Java Naming and Directory Interface)
マイクラサーバーではなにか対処方法ある?
MineCraftもJavaEditionはLog4jを使っているのでセキュリティの脆弱性についてブログ記事が出ていました。
Important Message: Security vulnerability in Java Edition | Minecraft
対処方法は公式側で準備した記事が掲載されているのでまずこっちを確認するが良いと思います。
Security Vulnerability in Minecraft: Java Edition – Home
参考情報
Apache Log4j2 2.14.1 Remote Code Execution
logging.apache.org:configuration
Apache Log4j Security Vulnerabilities