谷歌披露微软 Windows 锁定策略中的 0day 漏洞

 

Windows 10 中存在一个漏洞,如遭利用则可绕过 Windows 锁定策略并导致任意代码执行。微软在收到报告后的90天内仍未修复漏洞。

谷歌 Project Zero 团队的安全研究员 James Forshaw 指出,在启用用户模式完整性 (UMCI) 的系统上,攻击者可利用一个 .NET 漏洞绕过针对 COM Class 初始化的 Windows 锁定策略检查。

该问题已在 Windows 10S 上复现,但据称影响所有启用 UMCI 的 Windows 10 版本。

 

漏洞 POC 已发布

安全研究人员解释称,这个漏洞存在于当实例化 .NET COM 对象时,WLDP COM Class锁定策略的行为方式。

该策略中包含8到50个 COM 对象的硬编码列表,这些对象可以让开发脚本引擎实例化。因此,即使有人能够在一个受允许的 COM CLSID 下注册一个现有的 DLL,好的实现应该检查传递给 DllGetObject 的 CLSID 是否符合以上提及的内部列表并阻止攻击。

研究人员发现,当 .NET COM 对象被实例化时,传递到 DllGetClassObject 的 CLSID 也仅用于在 HKCR 中查找注册信息,CLSID 被抛弃而 .NET 对象得以创建。

因此,攻击者可添加注册表项(包括 HKCU 的注册表项),在受允许的 CLSID 下加载一个任意的 COM 可见类。

研究人员指出,“它会直接影响类策略,因为它允许攻击者添加注册表项(包括 HKCU 的注册表项),而后者在受允许的 CLSID 下加载一个任意的 COM 可见类。由于 .NET 并不在意 .NET 类型是否具有特定的 GUID,因此可利用此引导任意代码执行。”

攻击者可使用工具如 Forshaw 创建的DotNetToJScript 工具实施利用。该工具是一款免费工具,可供用户生成引导任意 .NET程序集和类的 JScript。

Forshaw 还发布了两个文件作为 POC:建立注册表的一个 .INF 文件和一个 .SCT 文件。后者是使用 DotNetToJScript 将不受信任的 .NET 程序集加载到内存中显示消息框的示例,不过它还可用于其它多种用途。

 

漏洞虽未修复但并不严重

1月19日,微软收到该漏洞报告并证实漏洞存在。按照 Project Zero 的规定,供应商可以在漏洞公开前的90天内修复漏洞,而微软并未按期修复。

不过这个漏洞也并不严重,这也是它的详情被公开发布的一个主要原因。

研究人员解释称,漏洞并未在4月的补丁星期二中予以修复,因此超过规定期限。该问题仅影响启用 Device Guard 的系统(如 Windows 10 系统),并且仅可被用于获得机器的持续性代码执行能力。它不可遭远程利用,也非权限提升问题。

攻击者要利用这个缺陷,需要在受影响计算机上立足以安装所需注册表项。而操作系统中如存在远程执行漏洞则可被用于此目的。

鉴于 .NET 框架中存在已知的 Device Guard 绕过问题且未被修复仍可遭利用,因此如果所有已知的绕过漏洞被修复的话,这个问题本不至于如此严重。

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。查看原文

为您推荐