Java製ソフトウェアで広く使用されているログ出力ライブラリ「Apache Log4j」に、任意のリモートコードを実行することができる重大な脆弱性が存在することがわかりました(ITmedia、9to5Mac)。
脆弱性は「Log4Shell」と呼ばれ、サーバー上で悪意のあるコードを実行することができるため、iCloudやSteamなど大規模なプラットフォームに影響を及ぼす可能性があると言われています。
セキュリティ企業のLunaSec社によると、脆弱性はJava製のアプリケーションで使用されているオープンソースのログ出力ライブラリ「log4j」に存在し、攻撃者はアプリケーションに特定の文字列をログとして保存させることで脆弱性を悪用することが可能となります。アプリケーションではユーザーが送受信したメッセージや、システムエラーの詳細などさまざまな情報が日常的に記録されているため、この脆弱性は容易に悪用可能であることが懸念されています。
Log4Shellの脆弱性は、Minecraftのサーバーで確認されており、ハッカーはチャットメッセージを通じてこの脆弱性を利用していた模様。LunaSec社は、Apple社のiCloudにもこの脆弱性があると主張しています。
影響するApache log4j2のバージョンは2.0〜2.14.1(両端含む)で、log4j 2.15.0はこの脆弱性に対処しています。
Hacker Newsのコメントによると、version 2.10.0移行のバージョンは「formatMsgNoLookups=true」にすることで脆弱性を緩和することができ、これより古いバージョンには、緩和策として以下の選択肢が存在します。
- すべてのロギングパターンレイアウトを変更して、ロギングコンフィグレーションファイルで%mの代わりに %m{nolookups}と記述する。詳細はhttps://issues.apache.org/jira/browse/LOG4J2-2109。
- クラスローダで脆弱なバージョンの代わりに置き換えたものを使用する。org.apache.logging.log4j.core.lookup.JndiLookupクラスを脆弱ではないもの、あるいは空の実装で置き換える。この動作を理解するには、アプリケーションやスタックのクラスローディングのドキュメントを参照すること。
メジャーなサービス・ソフトウェアは今後脆弱性への対応が行われるはずですが、更新のとまっているJava製ソフトウェアを使用する際は注意が必要となりそうです。