CVE-2024-38021 outlook RCE 漏洞分析

最近,Morphisec 的研究人员发现了 Microsoft Outlook 中的一个漏洞,该漏洞可能导致远程代码执行(RCE)。该漏洞被标识为 CVE-2024-38021,暴露了 Microsoft Outlook 应用程序中的一个重大安全缺陷,攻击者可以在不需要事先认证的情况下执行任意代码。

在这篇博客文章中,我们将对发现的漏洞进行深入的技术分析。本文详细说明了漏洞的运行机制,并讨论了一个尚未修补的与 NTLM 凭据泄露相关的安全风险。

CVE-2024-38021 outlook RCE 漏洞分析
CVE-2024-38021

CVE-2024-21413 回顾

今年早些时候,Check Point 的研究团队发现了 Outlook 中的一个漏洞,该漏洞绕过了用户点击指向远程文件的超链接时显示的安全限制。这一漏洞导致了本地 NTLM 凭据泄露,并可能触发远程代码执行。

CVE-2024-38021 outlook RCE 漏洞分析

Outlook 通知关于漏洞利用

该绕过方法包括在链接中添加一个感叹号,将仅指向远程 SMB 共享文件的文件标识符转换为通用的复合标识符。这个复合标识符由文件标识符和项目标识符组成,从而改变了 Microsoft Outlook 解析由字符串表示的链接的方式。

CVE-2024-38021 outlook RCE 漏洞分析

漏洞利用图解

通过仔细检查在解析和创建超链接对象的过程中涉及的 Windows API,我们注意到 Microsoft 文档 中的两个重要安全警告:

  1. Hlink!HlinkCreateFromString – 这是一个负责创建超链接对象的 API 调用——它提到,如果按照漏洞建议的形式使用复合标识符调用此函数,将把超链接字符串传递给不太安全的 API 调用 MkParseDisplayName。
  2. Ole32!MkParseDisplayName – 与前一个方法中的安全警告类似,此警告指出,从不受信任的来源传递超链接字符串是不安全的,并且某些标识符实现可能会在解析过程中对字符串采取行动。

当复合标识符传递给 MkParseDisplayName 时,它会调用 BindtoObject 方法,该方法涉及负责处理特定文件类型的相关 com 对象。

例如,如果文件标识符的扩展名为 .rtf,它将在后台启动 winword.exe,而不显示用户界面,访问由文件标识符指向的文件,并尝试查找由项目标识符指向的对象。

这导致了两个重要问题:

  1. 文件被访问——导致本地 NTLM 凭据泄露。
  2. 文件被解析——在解析例程中涉及的链式 RCE(例如 – CVE-2023-21716)。

CVE-2024-38021 outlook RCE 漏洞分析

CVE-2023-21716 解析例程

在这项研究中揭示的一个重要信息是,不仅感叹号会触发这种行为,其他字符如开方括号和冒号也会。

CVE-2024-38021 outlook RCE 漏洞分析

CVE-2024-21413 补丁研究中的代码片段

CVE-2024-21413 补丁分析

Microsoft 使用挂钩技术来修补与 Microsoft Office 应用程序相关的某些漏洞。对于 CVE-2024-21413,他们通过挂钩易受攻击的 MkParseDisplayName 函数来更新 InitDetours 方法。

CVE-2024-38021 outlook RCE 漏洞分析

CVE-2024-21413 补丁中的代码片段

挂钩函数简单地验证 BlockMkParseDisplayNameOnCurrentThreat 标志的值。这个标志的用途很明确:如果标志设置为 true,则不会调用 MkParseDisplayName Windows API,从而防止解析潜在的恶意标识符字符串。

CVE-2024-38021 outlook RCE 漏洞分析

CVE-2024-38021 补丁中的代码片段显示可能不会解析恶意字符串

该标志在调用 Hlink!HlinkCreateFromString 的 Microsoft Office 包装函数中设置,mso30win32client!MsoHrHlinkCreateFromString 仅当应用程序 ID 等于 Outlook 时才会将该标志设置为 true。

CVE-2024-38021 outlook RCE 漏洞分析

CVE-2024-38021 攻击中的代码片段

绕过 Microsoft 的补丁:CVE-2024-38021

Microsoft 修补了从字符串处理超链接创建的函数,但是我们发现,当您在图像标签 URL 中传递复合标识符时,它将使用 mso30win32client!HrPmonFromUrl 方法进行解析,该方法负责处理图像标签中的 URL 解析。

CVE-2024-38021 outlook RCE 漏洞分析

CVE-2024-38021 攻击中的代码片段

HrPmonFromUrl API 不会设置 BlockMkParseDisplayNameOnCurrentThread 标志,从而允许处理复合标识符。

CVE-2024-38021 outlook RCE 漏洞分析
CVE-2024-38021 攻击图解

这导致调用了不安全的 MkParseDisplayName 函数,该函数解析复合标识符,并触发与之前的漏洞(CVE-2024-21413)相同的安全问题,包括潜在的远程代码执行和本地 NTLM 凭据泄露。

CVE-2024-38021 outlook RCE 漏洞分析

CVE-2024-38021 攻击中的代码片段

CVE-2024-38021 补丁

为了解决 CVE-2024-38021,Microsoft 采用了与之前漏洞相同的方法,使用了 BlockMkParseDisplayNameOnCurrentThread 标志。这一次,他们更新了 HrPmonFromUrl 函数,将该标志设置为 true。通过这样做,任何在图像标签 URL 中传递的复合名称对象都将被阻止调用易受攻击的 MkParseDisplayName 函数,从而防止漏洞的利用。

CVE-2024-38021 outlook RCE 漏洞分析

来自 CVE-2024-38021 补丁的代码片段

NTLM 凭据泄露 – 未修复

尽管 Microsoft 努力修补了 CVE-2024-38021 中发现的特定攻击向量,但仍有一个漏洞未被修复。我们发现,传递一个简单的文件名称对象仍会导致本地 NTLM 凭据被泄露,这表明该补丁并未完全解决与名称对象处理相关的所有潜在安全风险。

CVE-2024-38021 outlook RCE 漏洞分析

NTLM 凭据泄露的文本摘录

Microsoft 的官方回应是:“我们建议客户遵循安全最佳实践,不要信任来自未知来源的内容。我们已记录(阻止或取消阻止电子邮件消息中的自动图片下载 – Microsoft 支持)了 Outlook 默认情况下阻止来自 Internet 的自动图片下载,以保护用户免受潜在的有害附件或链接文档的侵害。”


原文始发于微信公众号(3072):CVE-2024-38021 outlook RCE 漏洞分析

版权声明:admin 发表于 2024年8月20日 下午8:08。
转载请注明:CVE-2024-38021 outlook RCE 漏洞分析 | CTF导航

相关文章