了解如何在 Microsoft Defender for Endpoint 中管理 Log4Shell 漏洞

Log4Shell 漏洞是远程代码执行 (Apache Log4j 2 日志记录库中的 RCE) 漏洞。 由于 Apache Log4j 2 通常被许多软件应用程序和联机服务使用,因此对于全球公司来说,它代表着一种复杂且高风险的情况。 CVE-2021-45046 (CVE-2021-44228 称为“Log4Shell”,) 它引入了一种新的攻击途径,攻击者可以利用该途径在组织中提取数据和部署勒索软件。

注意

请参阅博客 《关于防止、检测和搜寻利用 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 检测,请执行以下操作:

  1. 转到 “设置”“>设备发现>发现设置”。
  2. 选择 “ (CVE-2021-44228) 启用 Log4j2 检测
  3. 选择“保存”

用于启用 log4j2 检测的设置的屏幕截图。

运行这些探测将触发标准 Log4j 流,而不会对正在探测的设备或探测设备造成任何有害影响。 探测本身是通过向发现的设备发送多个 HTTP 请求来完成的,这些请求面向常见 Web 应用程序端口 (例如 80,8000,8080,443,8443) 和 URL。 请求包含具有 JNDI 有效负载的 HTTP 标头,该有效负载触发来自探测的计算机的 DNS 请求。

例如,用户代理:${jndi:dns://192.168.1.3:5353/MDEDiscoveryUser-Agent},其中 192.168.1.3 是探测计算机的 IP。

注意

启用 Log4j2 检测还意味着已加入的设备将使用自探测来检测本地漏洞。

易受攻击的软件和文件检测

Defender 漏洞管理提供检测层来帮助你发现:

  • 易受攻击的软件:发现基于已安装的应用程序通用平台枚举 (CPE) ,这些枚举已知容易受到 Log4j 远程代码执行的影响。

  • 易受攻击的文件: 将评估内存中的文件和文件系统中的文件。 这些文件可以是具有已知易受攻击版本的 Log4j-core jar 文件,也可以是包含易受攻击的 jndi 查找类或易受攻击的 log4j-core 文件的 Uber-JAR。 具体而言,它:

    • 通过检查 JAR 文件并搜索以下文件,确定 JAR 文件是否包含易受攻击的 Log4j 文件:\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-

下表描述了搜索功能支持的平台和版本:

功能 文件类型 Windows10+、
server2019+
Server 2012R2、
server2016
Server 2008R2 Linux + macOS
搜索范围内存 Log4j-core [1] -
Uber-JARs [1] -
搜索磁盘上的所有文件 Log4j-core [1] -
Uber-JARs [1] - -

在 Windows Server 2012 R2 和 2016 上安装 KB5005292 时, (1 个) 功能可用。

了解 Log4Shell 公开和缓解选项

  1. 在Microsoft Defender门户中,转到漏洞管理>弱点
  2. 选择 CVE-2021-44228
  3. 选择“ 打开漏洞”页

漏洞管理仪表板上的“漏洞”页的屏幕截图。

Log4Shell 漏洞缓解

通过阻止使用默认配置的 Log4j 版本 2.10 - 2.14.1 上的 JNDI 查找,可以缓解 log4Shell 漏洞。 若要创建此缓解操作,请从威胁感知仪表板

  1. 选择“ 查看漏洞详细信息”。
  2. 选择 “缓解选项”。

可以选择将缓解措施应用于所有公开的设备,或选择特定的已载入设备。 若要完成此过程并在设备上应用缓解措施,请选择“Create缓解操作”。

CVE-2021-44228 的缓解选项的屏幕截图。

缓解状态

缓解状态指示是否已将禁用 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:

  1. 打开提升权限的 PowerShell 窗口。
  2. 运行以下命令:
  [Environment]::SetEnvironmentVariable("LOG4J\_FORMAT\_MSG\_NO\_LOOKUPS", $null,[EnvironmentVariableTarget]::Machine)

更改将在设备重启后生效。

对于 Linux:

  1. 打开文件 /etc/environment 并删除行 LOG4J_FORMAT_MSG_NO_LOOKUPS=true
  2. 删除文件 /etc/systemd/system.conf.d/log4j_disable_jndi_lookups.conf
  3. 删除文件 /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 相关的活动安全建议,请从漏洞详细信息页中选择“ 安全建议 ”选项卡。 在此示例中,如果选择“ 更新 Apache Log4j ”,你将看到另一个浮出控件,其中包含详细信息:

更新 apache log4j 安全建议的屏幕截图。

选择“ 请求修正 ”以创建修正请求。

在Microsoft Defender门户中探索漏洞

找到公开的设备、文件和软件后,还将通过Microsoft Defender门户中的以下体验传达相关信息:

软件清单

在软件清单页上,搜索 CVE-2021-44228 以查看有关 Log4j 软件安装和公开的详细信息:

软件清单页上 log4j 漏洞的屏幕截图。

弱点

在“弱点”页上,搜索 CVE-2021-44228 以查看有关 Log4Shell 漏洞的信息:

漏洞页上 log4j 漏洞的屏幕截图。

使用高级搜寻

可以使用以下高级搜寻查询来识别设备上已安装软件中的漏洞:

   DeviceTvmSoftwareVulnerabilities
   | where CveId in ("CVE-2021-44228", "CVE-2021-45046")

可以使用以下高级搜寻查询来识别设备上已安装软件中的漏洞,以显示磁盘中的文件级发现结果:

   DeviceTvmSoftwareEvidenceBeta
   | mv-expand DiskPaths
   | where DiskPaths contains "log4j"
   | project DeviceId, SoftwareName, SoftwareVendor, SoftwareVersion, DiskPaths