Microsoft Defender for Endpoint で Log4Shell の脆弱性を管理する方法について説明します
Log4Shell の脆弱性は、Apache Log4j 2 ログ ライブラリに存在するリモート コード実行 (RCE) の脆弱性です。 Apache Log4j 2 は多くのソフトウェア アプリケーションやオンライン サービスで一般的に使用されているため、世界中の企業にとって複雑でリスクの高い状況を表しています。 "Log4Shell" (CVE-2021-44228、 CVE-2021-45046) と呼ばれ、攻撃者が悪用してデータを抽出し、組織内にランサムウェアを展開できる新しい攻撃ベクトルが導入されています。
注:
組織を保護するための脆弱性と製品固有の軽減策に関するガイダンスと技術情報については 、Log4j 2 の脆弱性とMicrosoft セキュリティ対応センター の悪用を防止、検出、および探索するためのガイダンスに関するブログを参照してください。
検出、監視、軽減機能の概要
Defender 脆弱性管理には、組織による Log4Shell の脆弱性の特定、監視、軽減に役立つ次の機能が用意されています。
- 検出: 公開されているデバイス (Microsoft Defender for Endpoint のオンボードデバイスと、まだオンボードされていないデバイス) の検出は、ディスク上で検出された脆弱なソフトウェアと脆弱なファイルに基づいています。
- 脅威の認識: 組織の露出を評価するための統合ビュー。 このビューには、デバイス レベルとソフトウェア レベルでの露出が表示され、脆弱なファイルの詳細 (最後に表示されたとき、最後に実行された時刻、開いているポートで最後に実行された時刻など) にアクセスできます。 この情報を使用して、修復アクションに優先順位を付けることができます。 公開されているデバイスに関連するデータがダッシュボードに表示されるまでに最大 24 時間かかることがあります。
- 軽減策のオプション: リスク軽減オプションを適用して、露出リスクを下げるのに役立ちます。
- 高度なハンティング: 高度なハンティングを使用して、ディスク上で識別された脆弱な log4j ファイルの詳細を返します。
注:
これらの機能は、Windows 10 & Windows 11、Windows Server、Linux、macOS でサポートされています。
Linux でのサポートには、Microsoft Defender for Endpoint Linux クライアント バージョン 101.52.57 (30.121092.15257.0) 以降が必要です。
macOS でのサポートには、Microsoft Defender for Endpoint macOS クライアント バージョン 20.121111.15416.0 以降が必要です。
サポートされているバージョンの詳細については、「 サポートされているオペレーティング システムのプラットフォームと機能」を参照してください。
公開されているデバイスの検出
埋め込み Defender 脆弱性管理機能と、Microsoft Defender ポータルで Log4j 検出を有効にすると、Log4Shell の脆弱性にさらされているデバイスを検出するのに役立ちます。
オンボードデバイスは、脆弱なソフトウェアやファイルを検出できる既存の埋め込み Defender 脆弱性管理機能を使用して評価されます。
検出されたがまだオンボードされていないデバイスで検出を行うには、Log4j 検出を有効にする必要があります。 これにより、デバイス検出がネットワークをアクティブにプローブするのと同じ方法でプローブが開始されます。 プローブには、複数のオンボード エンドポイント (Windows 10 以降および Windows Server 2019 以降のデバイス) と、CVE-2021-44228 に対して脆弱でリモートで公開されているデバイスを検出するためのサブネット内のプローブのみが含まれています。
Log4 検出を有効にするには:
[設定>デバイス検出>Discovery セットアップ] に移動します。
[ Log4j2 検出を有効にする (CVE-2021-44228)] を選択します。
[保存] を選択します。
これらのプローブを実行すると、プローブ対象のデバイスまたはプローブ デバイスに有害な影響を与えることなく、標準の Log4j フローがトリガーされます。 プローブ自体は、検出されたデバイスに複数の HTTP 要求を送信し、一般的な Web アプリケーション ポート (例: - 80,8000,8080,443,8443) と URL を対象にして実行されます。 要求には、プローブされたマシンからの DNS 要求をトリガーする JNDI ペイロードを含む HTTP ヘッダーが含まれています。
たとえば、User-Agent: ${jndi:dns://192.168.1.3:5353/MDEDiscoveryUser-Agent} です。192.168.1.3 はプローブ マシンの IP です。
注:
Log4j2 検出を有効にすると、オンボードされたデバイスは自己プローブを使用してローカルの脆弱性を検出することも意味します。
脆弱なソフトウェアとファイルの検出
Defender 脆弱性管理には、検出に役立つ検出レイヤーが用意されています。
脆弱なソフトウェア: 検出は、Log4j リモート コード実行に対して脆弱であることが知られている、インストールされているアプリケーション Common Platform Enums (CPE) に基づいています。
脆弱なファイル: メモリ内のファイルとファイル システム内のファイルの両方が評価されます。 これらのファイルは、既知の脆弱なバージョンの Log4j-core jar ファイル、または脆弱な jndi ルックアップ クラスまたは脆弱な log4j-core ファイルを含む Uber-JAR のいずれかです。 具体的には、次のようになります。
- JAR ファイルに脆弱な Log4j ファイルが含まれているかどうかを判断するには、JAR ファイルを調べて、次のファイルを検索します。 \META-INF\maven\org.apache.logging.log4j\log4j-core\pom.properties - このファイルが存在する場合、Log4j バージョンが読み取られ、抽出されます。
- 文字列 "/log4j/core/lookup/JndiLookup.class" を含むパスを検索して、JAR ファイル内の JndiLookup.class ファイルを検索します。JndiLookup.class ファイルが存在する場合、Defender 脆弱性管理は、この JAR に pom.properties で定義されたバージョンの Log4j ファイルが含まれているかどうかを判断します。
- は、次のいずれかの文字列を含むパスを検索して、入れ子になった JAR 内に埋め込まれた脆弱な Log4j-core JAR ファイルを検索します。
- lib/log4j-core-
- WEB-INF/lib/log4j-core-
- App-INF/lib/log4j-core-
次の表では、サポートされているプラットフォームとバージョンの検索機能について説明します。
機能 | ファイルの種類 | Windows 10 以降、 server2019+ |
Server 2012R2、 server2016 |
Server 2008R2 | Linux + macOS |
---|---|---|---|---|---|
メモリ内検索 | Log4j-core | 必要 | はい[1] | - | 必要 |
Uber-JARs | 必要 | はい[1] | - | 必要 | |
ディスク上のすべてのファイルを検索する | Log4j-core | 必要 | はい[1] | 必要 | - |
Uber-JARs | 必要 | はい[1] | - | - |
(1) 機能は、windows Server 2012 R2 および 2016 に KB5005292 がインストールされている場合に使用できます。
Log4Shell の公開と軽減策のオプションについて説明します
Microsoft Defender ポータルで、[ 脆弱性の管理>Weaknesses] に移動します。
[CVE-2021-44228] を選択します。
[ 脆弱性ページを開く] を選択します。
Log4Shell の脆弱性の軽減策
log4Shell の脆弱性は、既定の構成で Log4j バージョン 2.10 から 2.14.1 で JNDI 参照を回避することで軽減できます。 この軽減策アクションを作成するには、 脅威認識ダッシュボードから次の操作を行います。
[ 脆弱性の詳細の表示] を選択します。
[ 軽減策オプション] を選択します。
すべての公開デバイスに軽減策を適用するか、特定のオンボード デバイスを選択できます。 プロセスを完了し、デバイスに軽減策を適用するには、[ 軽減策アクションの作成] を選択します。
軽減の状態
軽減状態は、JDNI 参照を無効にする回避策の軽減策がデバイスに適用されたかどうかを示します。 [公開されているデバイス] タブで、影響を受ける各デバイスの軽減状態を表示できます。 これにより、軽減状態に基づいて、デバイスの軽減策や修正プログラムの優先順位付けに役立ちます。
次の表に、潜在的な軽減状態を示します。
軽減の状態 | 説明 |
---|---|
回避策の適用 |
Windows: LOG4J_FORMAT_MSG_NO_LOOKUPS環境変数は、最新のデバイスの再起動前に確認されました。 Linux + macOS: 実行中のすべてのプロセスの環境変数にLOG4J_FORMAT_MSG_NO_LOOKUPS=true があります。 |
回避策の保留中の再起動 | LOG4J_FORMAT_MSG_NO_LOOKUPS環境変数が設定されていますが、次の再起動は検出されません。 |
適用されていない |
Windows: LOG4J_FORMAT_MSG_NO_LOOKUPS環境変数は観察されませんでした。 Linux + macOS: 実行中のすべてのプロセスの環境変数に LOG4J_FORMAT_MSG_NO_LOOKUPS=true があるわけではありません。また、軽減アクションがデバイスに適用されませんでした。 |
部分的に軽減 | Linux + macOS: 軽減アクションはデバイスに適用されましたが、実行中のすべてのプロセスがその環境変数にLOG4J_FORMAT_MSG_NO_LOOKUPS=true であるわけではありません。 |
該当なし | 脆弱なファイルを持つデバイスで、軽減策のバージョン範囲に含まれていない。 |
不明 | 現時点では、軽減状態を特定できませんでした。 |
注:
デバイスの更新された軽減状態が反映されるまでに数時間かかる場合があります。
Log4Shell の脆弱性に適用された軽減策を元に戻す
軽減策を元に戻す必要がある場合は、次の手順に従います。
Windows の場合:
管理者特権での PowerShell ウィンドウを開きます。
次のコマンドを実行します。
[Environment]::SetEnvironmentVariable("LOG4J\_FORMAT\_MSG\_NO\_LOOKUPS", $null,[EnvironmentVariableTarget]::Machine)
この変更は、デバイスの再起動後に有効になります。
Linux の場合:
ファイル /etc/environment を開き、LOG4J_FORMAT_MSG_NO_LOOKUPS=true 行を削除します
ファイル /etc/systemd/system.conf.d/log4j_disable_jndi_lookups.conf を削除します
ファイル /etc/systemd/user.conf.d/log4j_disable_jndi_lookups.conf を削除します
この変更は、デバイスの再起動後に有効になります。
macOS の場合:
ファイル setenv を削除します。次のフォルダーから LOG4J_FORMAT_MSG_NO_LOOKUPS.plist を選択します。
- /Library/LaunchDaemons/
- /Library/LaunchAgents/
- /Users/[username]/Library/LaunchAgents/ - すべてのユーザー
この変更は、デバイスの再起動後に有効になります。
Apache Log4j のセキュリティに関する推奨事項
Apache log4j に関連するアクティブなセキュリティの推奨事項を表示するには、脆弱性の詳細ページから [ セキュリティの推奨事項 ] タブを選択します。 この例では、[ Update Apache Log4j]\(Apache Log4j の更新 \) を選択すると、詳細情報を含む別のポップアップが表示されます。
[ 修復の要求] を選択して修復要求を作成します。
Microsoft Defender ポータルで脆弱性を調べる
公開されているデバイス、ファイル、ソフトウェアが見つかったら、Microsoft Defender ポータルで次のエクスペリエンスを通じて関連情報が伝達されます。
ソフトウェア インベントリ
ソフトウェア インベントリ ページで CVE-2021-44228 を検索して、Log4j ソフトウェアのインストールと公開の詳細を確認します。
脆弱性
[弱点] ページで CVE-2021-44228 を検索して、Log4Shell の脆弱性に関する情報を確認します。
高度なハンティングを使用する
次の高度なハンティング クエリを使用して、デバイスにインストールされているソフトウェアの脆弱性を特定できます。
DeviceTvmSoftwareVulnerabilities
| where CveId in ("CVE-2021-44228", "CVE-2021-45046")
次の高度なハンティング クエリを使用して、デバイスにインストールされているソフトウェアの脆弱性を特定して、ディスクからファイル レベルの結果を表示できます。
DeviceTvmSoftwareEvidenceBeta
| mv-expand DiskPaths
| where DiskPaths contains "log4j"
| project DeviceId, SoftwareName, SoftwareVendor, SoftwareVersion, DiskPaths