三年多前,研究人员发现了两个安全漏洞,即“幽灵”(Spectre)和“熔断”(Meltdown)。这两个漏洞揭示了大多数现代计算机处理器在处理数据以实现效率最大化方面的根本缺陷。虽然它们会影响到天文数字的计算设备,但在实践中,所谓的投机执行漏洞相对来说很难加以利用。但现在,谷歌的研究人员已经开发出一种概念验证,展示了幽灵攻击对浏览器构成的危险——希望激发新一代的防御。
研究人员从未怀疑过Spectre会被利用于基于浏览器的黑客攻击。在计算机上运行的每个程序都通过计算机的处理器和内存执行指令和处理数据,这使得所有这些信息都有可能受到投机执行攻击。这包括浏览器,它从web服务器加载数据,然后通过一个称为渲染引擎的本地功能在个人用户的设备上显示内容。“幽灵”浏览器黑客基本上会从受害者访问的一个网页发起攻击,从他们打开的其他网页获取数据。这种黑客行为甚至可以被用来冒充目标,从他们登录的网络应用程序中提取更多数据。
在最初的“幽灵党”和“Meltdown”事件曝光后的几年里,这种特定类型的攻击从未在野外出现过,目前也不清楚这种方法的实用性有多大。谷歌对自己的Chrome浏览器的概念验证不仅说明了其可行性,也暗示了浏览器和网页开发者更全面地防范此类攻击的策略。
谷歌的安全工程师Stephen Röttger说:“当我把这个漏洞分享给Chrome安全团队和产品安全团队时,每个人都说,‘好吧,哇,很明显这就是影响。’”“基于此,我们做出了一系列决定,投入更多资源,在我们的web框架上推出Spectre防御系统。”
“我们认为我们已经了解了开发者需要做些什么来保护自己。”
Mike West,谷歌Chrome浏览器
在过去的几年中,Chrome和其他主流浏览器已经实现了一种被称为“站点隔离”的做法,将网页分开呈现,并将它们的数据相互隔离。由于Spectre攻击主要是诱导处理器在适当的时候泄露数据,站点隔离使得黑客很难获取他们想要的敏感信息,因为数据并不是在同一时间通过处理器的同一位置流动的。浏览器还添加了相关的防御措施,以单独加载单个网站的组件(比如公司自己的logo和第三方广告),并在互惠性不是很重要的情况下,阻止两个页面之间的数据双向流动。
这些类型的防御并不能完全阻止幽灵的攻击。相反,如果恶意黑客确实发动了这样的黑客攻击,他们就可以减少从处理器获取任何有用或私人信息的机会。来自Röttger和他的同事的概念验证揭示了浏览器(包括基于chrome的浏览器,如Microsoft Edge)能够实现这些类型的防御的更微妙的方式。但它也强调了web开发人员可以用不同的方式构建他们的平台和应用程序,以保持功能,同时更有策略地锁定用户信息。
Chrome平台安全主管兼万维网联盟网络应用安全工作组联合主席Mike West说:“我们认为,我们已经把我们的头脑集中在开发者需要做什么来保护自己,他们需要做的一套事情并不大得惊人。”“真正的工作,以及浏览器不能代表开发者去做的原因是,需要做出的决定是特定于应用程序的。他们将分析你的服务器提供给互联网的东西,以及这些东西应该提供的方式。”
谷歌正在与W3C(一个国际标准组织)合作,为浏览器和web开发人员提出指导方针和最佳实践。这一策略以前曾在谷歌中奏效,比如在推广HTTPS网络加密等大规模倡议中起到了推动作用。但是West承认,让整个网络社区都参与到这种结构上的改变需要时间。
在过去的几年里,Mozilla等其他浏览器制造商也一直在研究幽灵防御系统。Mozilla高级工程经理Neha Kochar表示,由于有了这些保护措施,Firefox将不会受到谷歌研究人员为Chrome开发的概念验证漏洞的攻击。
Kochar说:“尽管如此,Spectre漏洞的另一个可演示的PoC肯定是值得赞赏的,因为它帮助我们的开源社区在所有浏览器的基础上构建和找到任何其他可能的安全改进。”“Mozilla加入谷歌,热情地鼓励网络开发者使用新的网络标准来确保他们的网站安全。”
开发Safari浏览器的苹果公司表示,像谷歌的Chrome概念验证中所演示的那样的攻击不会立即对macOS用户构成威胁。不过,一位发言人告诉《连线》杂志,这项研究对于扩大社区对这些威胁的理解很重要。
Mozilla、谷歌和其他主要的浏览器开发人员已经为浏览器和web开发人员开发了许多站点隔离和数据隔离标准,比如名为CORP、COOP和coep的集群。微软拒绝置评;截至发稿时,苹果并未对此发表评论。
谷歌推动额外的Spectre防御建议仍在W3C的初步考虑中。考虑到Spectre的开发还没有成为一个大规模的、地方性的问题,社区合作提前解决潜在的暴露问题可以避免以后的大规模开发问题——考虑到事件响应社区已经面临了多少这样的情况,这是一个重要的贡献。