未记录的 Edge 功能破坏了 Internet Explorer 的安全性

以前,我们 已经写了 关于 Internet Explorer 中发现的零日漏洞,该漏洞允许使用专门准备的 MHT 文件将信息从用户计算机下载到远程服务器。 近日,这个漏洞是由安全专家 John Page 发现的,决定检查和研究该领域的另一位知名专家——安全审计公司 ACROS Security 总监、微补丁服务 0patch 联合创始人 Mitya Kolsek。 他 发表 其调查的完整记录表明微软明显低估了问题的严重性。

未记录的 Edge 功能破坏了 Internet Explorer 的安全性

奇怪的是,Kolsek 最初无法重现 John 描述和演示的攻击,他使用 Windows 7 上运行的 Internet Explorer 下载并打开恶意 MHT 文件。 尽管他的进程管理器显示,计划从他那里窃取的system.ini被隐藏在MHT文件中的脚本读取,但没有发送到远程服务器。

“这看起来像是一个典型的网络标记情况,”科尔塞克写道。 “当从 Internet 收到文件时,正确运行的 Windows 应用程序(例如 Web 浏览器和电子邮件客户端)会以以下形式向该文件添加标签 替代数据流 名称 Zone.Identifier 包含字符串 ZoneId = 3。这让其他应用程序知道该文件来自不受信任的来源,因此应该在沙箱或其他受限环境中打开。”

研究人员验证,IE确实为下载的MHT文件设置了这样的标签。 然后,Kolsek 尝试使用 Edge 下载同一文件并在 IE 中打开它,IE 仍然是 MHT 文件的默认应用程序。 出乎意料的是,这个漏洞竟然奏效了。

未记录的 Edge 功能破坏了 Internet Explorer 的安全性

首先,研究人员检查了“mark-of-the-Web”,结果发现,除了安全标识符之外,Edge 还将文件来源的来源存储在替代数据流中,这可能会引发一些有关此隐私的问题。方法。 Kolsek 推测额外的行可能会混淆 IE 并阻止其读取 SID,但事实证明,问题出在其他地方。 经过长时间的分析,安全专家在访问控制列表中的两个条目中找到了原因,这两个条目将读取MHT文件的权限添加到了某个系统服务中,而Edge在加载该服务后将其添加到了该服务中。

未记录的 Edge 功能破坏了 Internet Explorer 的安全性

James Foreshaw,来自专门的零日漏洞团队 - Google 零日计划 - 建议 推文称,Edge 添加的条目引用了 Microsoft.MicrosoftEdge_8wekyb3d8bbwe 包的组安全标识符。 从恶意文件的访问控制列表中删除第二行 SID S-1-15-2 - * 后,该漏洞就不再起作用。 结果,不知何故,Edge 添加的权限允许该文件绕过 IE 中的沙箱。 正如 Kolsek 和他的同事建议的那样,Edge 使用这些权限通过在部分隔离的环境中运行文件来保护下载的文件免遭低信任进程的访问。

未记录的 Edge 功能破坏了 Internet Explorer 的安全性

接下来,研究人员希望更好地了解导致 IE 安全系统失败的原因。 使用 Process Monitor 实用程序和 IDA 反汇编程序进行深入分析,最终发现 Edge 的设置分辨率阻止了 Win Api 函数 GetZoneFromAlternateDataStreamEx 读取 Zone.Identifier 文件流并返回错误。 对于 Internet Explorer 来说,在请求文件安全标签时出现这样的错误是完全出乎意料的,而且显然,浏览器认为该错误等同于该文件没有“mark-of-the-Web”标记,这会自动使其受信任,这就是为什么 IE 允许隐藏在 MHT 文件中的脚本执行并将目标本地文件发送到远程服务器的原因。

未记录的 Edge 功能破坏了 Internet Explorer 的安全性

“你看到这里的讽刺了吗?” 科尔塞克问道。 “Edge 使用的一项未记录的安全功能抵消了 Internet Explorer 中现有的、无疑更为重要的(网络标记)功能。” 

尽管该漏洞的重要性日益增加,它允许恶意脚本作为可信脚本运行,但没有迹象表明微软打算很快修复该错误(如果该错误得到修复)。 因此,我们仍然建议您像上一篇文章一样,更改任何现代浏览器打开 MHT 文件的默认程序。

当然,科尔塞克的研究并非没有一点自我公关。 在文章的最后,他演示了一个用汇编语言编写的小补丁,可以使用他公司开发的0patch服务。 0patch 会自动检测用户计算机上的易受攻击的软件,并即时对其应用小补丁。 例如,在我们描述的情况下,0patch 会将 GetZoneFromAlternateDataStreamEx 函数中的错误消息替换为与从网络接收到的不受信任文件相对应的值,这样 IE 就不会允许任何隐藏脚本按照内置脚本执行。在安全政策中。



来源: 3dnews.ru

添加评论