Apache Log4jに見つかった深刻な脆弱性「CVE-2021-44228」(CVSSスコアは10点中10点)について、各所で報じられています(リンク先は英語)。このライブラリは、エラーメッセージを記録する用途で、非常に多くのJavaアプリケーションにて使用されています。この脆弱性は、すでに活発に悪用されています。Apache Software Foundationは、このライブラリをバージョン2.15.0にアップデートすること、アップデートができない場合には「Apache Log4j Security Vulnerabilities」(英語)に説明されているいずれかの方法で対応することを、全開発者に向けて推奨しています。
CVE-2021-44228がそれほど危険である理由
CVE-2021-44228(別名:Log4Shell、LogJam)は、リモートコード実行(RCE)の脆弱性です。サーバーのどれか一つでこの脆弱性を悪用することができた場合、攻撃者は任意のコードを実行可能となり、システムを完全に制御可能となる可能性があります。
CVE-2021-44228が特に危険なのは、悪用が容易である点です。経験の少ないハッカーであっても、この脆弱性を使用して攻撃を成功させることが可能です。リサーチャーらによると、Log4jがログに文字列を一つ書き込むように仕向けるだけで、特定文字列を置き換えるLookup機能によって独自のコードをアプリケーションへアップロード可能となります。
CVE-2021-44228を通じた攻撃の概念実証(PoC)コードは、すでにインターネット上で入手可能な状態になっています。サイバーセキュリティ企業では、脆弱なアプリケーションを探すネットワークスキャンの動きを多数捕捉し、ハニーポットに対する攻撃も観測しています。
この脆弱性は、Alibaba Cloud Security TeamのChen Zhaojun氏によって発見されました。
Apache Log4J とは何か、このライブラリがこれほど普及しているのはなぜか
Apache Log4jは、Apache Logging Projectの一環です。このライブラリは、エラーのログを簡単に記録できる方法の一つであることから、ほとんどのJava開発者に使用されています。
Amazon、Apple iCloud、Cisco、Cloudflare、ElasticSearch、 Red Hat、Steam、Tesla、 Twitterなど、大手ソフトウェア企業および大手オンラインサービスの多くでLog4jライブラリが使用されています。このように広範囲で使用されていることから、一部の情報セキュリティリサーチャーは、脆弱性を抱えるサーバーに対する攻撃が今後数日の間に大幅に増加すると予測しています。
どのバージョンのLog4j が脆弱か、サーバーを攻撃から守るにはどうすべきか
Log4jのバージョン2.0-beta9〜2.14.1と、ほぼすべてのバージョンに脆弱性があります。最もシンプルで効果の高い対処法は、最新バージョンであるバージョン2.15.0をインストールすることです。最新バージョンは、こちらのページからダウンロード可能です(英語)。
何らかの事情でLog4jをアップデートできない場合のために、Apache Software Foundationはいずれかの方法で緩和を図ることを推奨しています。
- バージョン2.10〜2.14.1の場合:システムプロパティ「log4j2.formatMsgNoLookups」を設定するか、または環境変数「LOG4J_FORMAT_MSG_NO_LOOKUPS」をtrueに設定する。
- バージョン2.0-beta9〜2.10.0の場合:クラス「JndiLookup」をクラスパス「zip -q -d log4j-core – *. Jar org / apache / logging / log4j / core / lookup / JndiLookup .class」から削除する。
これに加え、悪意あるコードの起動を検知して攻撃の発展を阻止するため、サーバー上にセキュリティソリューションをインストールすることをお勧めします。