Google的Project Zero团队以发现公司本身开发的软件以及其他公司开发的软件中的漏洞而闻名。它的方法包括确定软件中的安全漏洞并将其秘密报告给供应商,从而让他们有90天的时间修复这些漏洞,然后再公开披露。根据所需修复程序的复杂性,有时还会以宽限期的形式提供额外的工作日。
在过去的几年里,球队已经揭示了重大漏洞的Windows 10秒,MacOS的内核,与iOS,等等。现在,它已在昨天的补丁星期二更新中声称已被Microsoft提供了一个不完整的修复程序之后,披露了各种版本的Windows中的“中等”严重性漏洞。
该漏洞于2020年5月5日首次报告给Microsoft,即使应用程序不具备此功能,它也可以通过用户的凭据绕过网络身份验证。
尽管Google对该漏洞的摘要充满了技术术语(您可以在此处自由深入阅读),但主要问题是旧版Windows AppContainer通过单点登录授予对企业身份验证的访问权限,这是受限制的提供访问敏感功能的功能。因此,它不会自动获得Windows Store应用程序的批准,并且主要用于侧载企业应用程序中。
尽管这本身不是缺陷,但是当应用程序向网络代理进行身份验证时,UWP网络错误地将异常作为例外时,就会出现问题。Google Project Zero的安全研究员James Forshaw指出:
这意味着AppContainer可以执行网络身份验证,只要它为InitializeSecurityContext指定了有效的目标名称,网络地址是否为已注册代理都无关紧要。这可能不是设计使然,但是此行为仅需引起一些抛弃,就其行为方式没有深入的细节,也许是设计使然。
结果是,您可以指定任意目标名称,只要应用程序具有不受限制的网络访问功能,就可以向面向网络的资源进行身份验证。同样,由于您可以指定任何目标名称,并且您正在执行实际的身份验证,因此诸如SPN检查和SMB签名之类的服务器保护就显得毫无意义。
Forshaw解释说,从理论上讲,由于防火墙API中存在后门,本地攻击者可以通过使用Classic Edge访问本地主机服务来利用此漏洞,然后找到要转义的系统服务。
有趣的是,这只是缺陷的一部分。Forshaw声称,即使处理网络地址不是代理的Microsoft代码是正确的,它仍然可以被绕过,因为它调用“ DsCrackSpn2”将服务类/实例:端口/服务名形式的网络目标名称解析为单个组件,但很显然,即使这样做也不正确。
还附带了概念验证(PoC)代码,以显示应用程序如何绕过企业身份验证来获得更高的特权。PoC尝试列出Windows Server消息块(SMB)的共享,即使OS不允许此访问,本地共享仍会列出。
Google Project Zero为Microsoft提供了标准的90天期限来修复此漏洞,并在7月31日提供了宽限期,以便公司可以在8月的补丁周二推出该修复程序。尽管微软确实确实在昨天的CVE-2020-1509中发布了该修复程序,并赞扬了詹姆斯· 弗肖( James Forshaw)发现了此修复程序,但零号项目团队声称这是不完整的修复程序,因为它没有纠正DsCrackSpn2目标名称解析技术。因此,Google现在已经按照其政策公开披露了该漏洞。
尽管安全漏洞似乎非常复杂,以致于普通脚本小子无法利用,但特权提升(即使是本地特权)也很危险。根据Microsoft的安全公告,此问题会影响Windows的多个版本,包括Windows Server 2012、2016、2019,Windows RT 8.1、8.1和Windows 10一直到2004版本。