了解如何管理 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 检测,请执行以下操作:
转到 “设置”“>设备发现>发现设置”。
选择 “ (CVE-2021-44228) 启用 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-
下表描述了搜索功能支持的平台和版本:
功能 | 文件类型 | 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 门户中,转到 漏洞管理>弱点。
选择 CVE-2021-44228。
选择“ 打开漏洞”页。
Log4Shell 漏洞缓解
通过阻止使用默认配置的 Log4j 版本 2.10 - 2.14.1 上的 JNDI 查找,可以缓解 log4Shell 漏洞。 若要创建此缓解操作,请从 威胁感知仪表板:
选择“ 查看漏洞详细信息”。
选择 “缓解选项”。
可以选择将缓解措施应用于所有公开的设备,或选择特定的已载入设备。 若要完成该过程并在设备上应用缓解措施,请选择“ 创建缓解操作”。
缓解状态
缓解状态指示是否对设备应用了禁用 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 相关的活动安全建议,请从漏洞详细信息页中选择“ 安全建议 ”选项卡。 在此示例中,如果选择“ 更新 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