vlambda博客
学习文章列表

很可怕!NSA、GitHub 被恶搞:Windows 的锅

微软披露漏洞突破证书验证机制还不到24个小时,研究人员就演示了攻击。


NSA官网被恶搞,使用Windows 10上的Chrome。

微软披露有史以来最严重的一个Windows漏洞还不到一天,就有安全研究人员演示了攻击者如何钻该漏洞的空子,从密码层面冒充互联网上的任何网站或服务器。

周三,研究人员Saleem Rashid在Twitter上发布了上世纪80年代的知名歌手Rick Astley的视频《Never Gonna Give You Up》在Github.com和NSA.gov上播放的画面。


这种数字手法名为瑞克摇摆(Rickrolling),常被用作以一种恶搞、无害的方式来表明严重的安全漏洞。 在这里,Rashid采用的攻击程序导致Edge浏览器和Chrome浏览器都骗过了Github和国家安全局(NSA)的HTTPS验证网站。 Brave及其他Chrome衍生浏览器以及Internet Explorer也可能中同样的招。 (没有迹象表明Firefox受此影响。

Rashid模拟了攻击漏洞: CVE-2020-0601,微软接到NSA私下透露的情况后在周二给这个严重漏洞打上了补丁。 正如外媒此前报道,该漏洞可以完全突破许多网站、软件更新、VPN及其他安全攸关的计算机用途所采用的证书验证机制。 它影响Windows 10系统,包括服务器版本: Windows Server 2016和Windows Server 2019。 Windows的其他版本不受影响。

Rashid告诉我,他的攻击程序使用了大约100行代码,但如果他想去除其攻击所拥有的“几个实用花招”,可以压缩到10行代码。 虽然让攻击漏洞在实际情形下得逞存在一些限制和几个可能很难满足的要求,周三的概念验证攻击表明了NSA为何将该漏洞评为“严重”等级,称狡猾的黑客会明白如何“迅速”利用漏洞。

“很可怕”

其他研究人员与NSA有着同样的紧迫感。

MongoDB的研究人员和安全负责人Kenn White说: “Saleem刚演示的表明,使用[简短]的脚本,你就可以为任何网站生成证书,而且证书在IE和Edge上完全受信任,仅使用Windows的默认设置。 这很可怕。 它会影响VPN网关、VoIP以及使用网络通信的几乎任何系统。 ”(在Rashid演示针对Chrome进行攻击之前,我与White有过交谈。

该漏洞涉及新版本Windows对使用椭圆曲线加密技术(ECC)的证书的有效性进行核查的方式。 虽然易受攻击的Windows版本核查三个ECC参数,却没有核查第四个关键的参数: 基点生成器,它在算法中通常表示为G'。 这归咎于微软实现ECC的方法,而不是ECC算法本身存在任何漏洞或缺陷。

攻击者只要提取Windows默认情况下随带的根证书的公钥,就可以钻这个漏洞的空子。 这些证书之所以被称为根证书,是由于它们属于各大证书管理机构(CA),这些CA要么颁发自己的TLS证书,要么验证代表根CA出售证书的中间CA。 只要用ECC算法来签名,任何根证书都可正常使用。 Rashid的攻击始于来自互联网界最大的CA: Sectigo的根证书,Sectigo以前使用Comodo这个名称。 这名研究人员随后修改了攻击手法,使用GlobalSign根证书。 他的代码可使切换自动进行。

该攻击者分析了用于生成根证书公钥的特定ECC算法,随后生成了一个私钥,复制了该算法的所有证书参数(基点生成器除外)。 由于易受攻击的Windows版本无法核查该参数,因此它们视为该私钥有效。 这么一来,攻击者就骗过了Windows信任的根证书,该根证书可进而生成用于对网站、软件及其他敏感内容进行身份验证的任何证书。

这种行为相当于执法人员核查某人的身份证,确保身份证如实描述此人的身高、住址、生日和脸部,却没有注意到标注的重量是250磅,而此人明明体重不到一半。

White说: “这个漏洞很奇怪,因为这就像对整个信任系统的基础只核查了一半,而这是整条信任链的核心部分。

注意事项

如前所述,有几个要求和限制大大提高了Rashid的攻击在实际情形下得逞的难度。 首先是它很可能需要主动的中间人攻击。 这种类型的攻击篡改网络中传输的数据,可能难以实施。 主动式中间人攻击之外的替代手法是,说服攻击对象点击虚假的URL。 这种方法容易得多,但也需要一定的针对性。 (它不适用于对要求连接客户端提供证书的网站或其他服务器发动的攻击。

该漏洞还要求攻击对象最近访问过使用传输层安全证书的站点,而该证书链接到ECC签名的根证书。 那是由于根证书必须已经被目标系统缓存起来。 Rashid表示,如果目标系统没有缓存根证书,攻击者仍可以成功地钻空子,只需添加可访问链接到根证书的网站的JavaScript。

另一个限制是: Chrome针对google.com及其他众多敏感网站使用了一种名为证书锁定(certificate pinning)的机制。 证书锁定要求对网站进行身份验证的证书包含特定的加密哈希,即使提供的证书在其他方面有效。 该措施可阻止攻击骗过受保护的网站后得逞。

谷歌代表称,虽然安装微软周二发布的补丁是防止攻击的唯一合理方法,但Chrome的开发人员已发布了测试版的修复程序,很快会并入到稳定版中。 提醒一下: 即使使用该修复程序,高危Windows版本的用户仍将面临来自其他攻击场景的巨大风险。

时间问题

尽管面临几个要求和限制,该漏洞仍很严重。 正如NSA官员在公告中所说:

该漏洞使Windows端点暴露在众多攻击途径面前。 NSA评估后认为该漏洞很严重,狡猾的网络攻击者很快就能明白底层漏洞; 一旦被利用,会使前面提到的平台岌岌可危。 不给漏洞打补丁会带来严重且广泛的后果。 远程攻击工具可能会迅速开发出来,唾手可得。 迅速打上补丁是眼下唯一已知的缓解方法,应是所有网络所有者关注的焦点。

该漏洞可能不会像2014年Heartbleed漏洞那样造成极严重的威胁,Heartbleed漏洞让攻击者可以从成千上万个易受攻击的网站窃取私钥、密码及其他高度敏感的数据。 但由于微软的这个漏洞挫败了广泛的安全措施,它甚至比苹果严重的GoToFail漏洞还危险,后者阻止iOS和macOS系统检测到网站提供的无效TLS证书。 这使CVE-2020-0601成为近年来最严重的漏洞之一。

Windows的自动更新机制可能已经给易受攻击的系统打上了补丁。 此处(https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2020-0601#ID0EGB)附有各种高危版本的修复程序。 还没有打上补丁的读者应立即打上补丁。