注:この記事は2021年12月15日に更新され、2021年12月20日に再度更新されました。
今週は、多くの企業がパッチの適用に追われているLog4j2の脆弱性について説明しますが、その前に、この脆弱性に関してお客様から寄せられた懸念の声を紹介します。
LinodeのLog4j2への対応について
- 12月10日(金)に公開されてから数時間のうちに、この重要なゼロデイ脆弱性のリスク範囲と影響を当社の全サイト(インフラ )で徹底的に評価しました。
- 私たちは、綿密なセキュリティ制御アーキテクチャの助けを借りて、失敗したエクスプロイトの試みを観察しました。
- 当社の環境では、この脆弱性に関連した侵害の兆候は観測されていませんが、この脆弱性などに関する既知のIoCについて、当社のインフラ を継続的に監視しています。
Log4j2 クリティカルなリモートコード実行の脆弱性 (CVE-2021-44228)
Log4j2は、一般的に使用されているApache ロギングユーティリティLog4jの後継です。このコンポーネントはJavaで書かれており、Apache Logging Servicesの一部です。Oracleによると、Java Naming and Directory Interface (JNDI)は、アプリケーション・プログラミング・インターフェース(API)であり、Javaで書かれたアプリケーションにネーミングとディレクトリ機能を提供する。
先週、Apache は、Log4j のセキュリティ脆弱性のページで、log4j-coreの 2.0-beta9 から 2.14.1 までのバージョンに深刻な脆弱性があることを公表しました。この脆弱性により、ログメッセージやログメッセージのパラメータを制御できる攻撃者が、LDAPサーバーから読み込んだ任意のコードを実行することができます。実際には、外部の攻撃者に悪用されます。この脆弱性は、攻撃者が影響を受ける各システム上で任意のコードを実行することができるため、CVSSスコアは10点満点中10点と評価されました。この問題は、12月初旬と11月下旬に発生した2つのJiraの問題に基づいてJNDIルックアップの動作を無効にした2.15のアップデートによって軽減されています。Apache は、このコンポーネントについて後から見つかった他の問題に対処するために2.17もリリースしました。
脆弱性の影響
Log4j2は、複数のベンダーが多数の製品で使用している一般的なJavaロギングフレームワークです。この脆弱性は、HTTPリクエストヘッダのUser-Agent文字列を操作して、脆弱なシステムにリクエストを送信することで、容易に悪用することができます。この種の攻撃に使用できるヘッダはUser-Agentだけではありませんが、悪意のあるペイロードを使用すると、脆弱なLog4j2コンポーネントが悪意のあるサーバのJNDIルックアップを引き起こします。HTTPヘッダに埋め込まれた悪意のあるURIに悪意のあるJavaクラスファイルへのパスが含まれている場合、このファイルがサーバのプロセスに注入され、攻撃者が影響を受けるシステムにアクセスできるようになります。現在、複数のペイロードやバイパスが自然界で観測されており、一般的な防御メカニズムを用いた防御が難しくなっています。
攻撃のイメージ図
スイス政府のコンピュータ緊急対応チームが作成した以下の図は、この攻撃がどのように機能し、どのように軽減するかを理解するのに役立ちます。
![](https://www.linode.com/wp-content/uploads/2021/12/log4j2-image-1-1064x715.png)
対象となる製品
多くのベンダーが、この脆弱性を緩和するための声明を発表しており、これらの声明は、影響を受けるお客様にとって有用なリソースとなるでしょう。以下のリンクから、影響を受ける製品の詳細をご覧いただけます。これは、すべての影響を受ける製品の包括的なリストではありません。影響を受けるベンダーとその製品の完全なリストについては、Github上でSwitHak氏が作成したリストや、TechSolvency社が共有している別のリストを参照してください。
公式の緩和策
Log4jのセキュリティページでは、Apache 、この脆弱性に対処するための複数の方法があるとしていますが、これらの方法は、すべての脆弱な製品で同じように機能しない可能性があることに留意する必要があります。詳細は、当該脆弱性に関するベンダーのセキュリティステートメントをご参照ください。
- Java 8(以降)をお使いの方は、リリース2.17.0にアップグレードして、最近発見された他の脆弱性とともに、この脆弱性に対処してください。
- Java 7を必要とするユーザーは、リリース2.12.2にアップグレードしてください。
- これらの2つのステップが不可能な場合、緩和策として、以下のようなコマンドを使用してクラスパス(log4j-core-*.jarと表示)からJndiLookupクラスを削除します。
zip -q -d log4j-core-*.jar
org/apache/logging/log4j/core/lookup/JndiLookup.class
私たちは、今回のように重要なものであれ、影響の少ないものであれ、脆弱性を軽減するための知識をコミュニティと共有できることを誇りに思います。ご意見、ご感想などは下記のコメント欄にお寄せください。
コメント