Log4Shell(CVE-2021-44228、CVE-2021-45046、CVE-2021-45105)とはリモートコード実行(RCE)の脆弱性であり、悪意のある攻撃者が任意のJavaコードを実行して、標的とするサーバを制御します。
2021年は、ゼロデイ脆弱性が多数確認された一年で、その中でもLog4Shellは、広く使用されているJavaベースのログライブラリであるApache Log4jに見つかった重大な欠陥です。この脆弱性はCVE-2021-44228として公式に特定され、Common Vulnerability Scoring System (CVSS) によると、重大度スコアは最大値の10.0 (CVSS v3.1) を記録しています。
この脆弱性は、2021年11月24日にApacheにて初めて非公開で報告されました。そして12月9日、Log4Shellの脆弱性情報が一般公開され、Apache Log4jのバージョン2.15.0にてパッチがリリースされました。
その後、実際に確認された攻撃のニュースをきっかけに、アメリカの米国サイバーセキュリティ・インフラストラクチャ・セキュリティ庁 (CISA)、イギリスの国家サイバーセキュリティセンター (NCSC)、カナダのサイバーセキュリティセンターなど、複数の国のサイバーセキュリティ機関が警告を発表しました。Apache Log4jはその普及率から、数億台のデバイスが影響を受ける可能性があります。
Log4Shellは、Java Naming and Directory Interface (JNDI) インジェクションの脆弱性であり、リモートコード実行(RCE)が可能です。脆弱性の影響を受けるバージョンに対して、ログメッセージに不正データ(悪意のあるペイロードなど)を含めることにより、攻撃者はJNDIlookupを介し、不正サーバへの接続を確立できます。その結果、世界中のどこからでも利用中のシステムへアクセスされる恐れがあります。
JNDIlookupは、ドメイン・ネーム・システム (DNS)、組織のネットワークデバイス情報などを提供するLightweight Directory Access Protocol (LDAP)、リモートメソッド呼び出し (RMI)、およびORB間プロトコル(IIOP)などのさまざまなタイプのプロトコルをサポートします。よって、Log4Shellは次のような脅威を招く可能性があります。
下図は、感染のイメージ図(英語)です。
基本的に、Apache Log4jバージョン2.0~2.14.1を実行しているデバイスが対象です。影響を受けるバージョンは、Apache Struts、Apache Solr、Apache Druid、Elasticsearch、Apache Dubbo、VMware vCenterに含まれています。
Apacheは当初、脆弱性にパッチを適用するためにApache Log4jバージョン2.15.0をリリースしました。ただし、このバージョンはJava 8でのみ機能しました。以前のバージョンのユーザは、一時的な緩和策を適用および再適用する必要があります。その後、Apacheはバージョン2.16.0をリリースし、影響を受ける可能性のあるライブラリをできるだけ早くアップデートするようユーザに呼びかけています。
本脆弱性に対応するには、「Apache Log4j」の最新版のパッチを適用してください。パッチの適用がすぐにできない場合は、仮想パッチや侵入検知/防御システム (IDS/IPS) の活用など、その他の緩和策の適用を強く推奨します。仮想パッチは脆弱性をさらなる悪用から保護し、IDS/IPSは、侵入および出口トラフィックを検査し、疑わしい挙動を検出します。