推测执行 (speculative execution) 是当今主流处理器(包括 AMD、ARM 和 Intel)中广泛采用的一项优化技术。其基本思路是利用处理器的空闲时间提前执行一些将来 “可能用得上,但也可能被放弃” 的计算(包括分支预测、预读内存和文件数据),从而极大提升系统的整体运行速度。然而我们发现这项优化技术可能存在漏洞,进而威胁用户数据安全。本文将为大家介绍事件脉络,并阐述我们至今为保护大家的数据安全所做的努力和成果。
背景
去年,我们的 Project Zero 团队发现了由 “推测执行” 引起的严重安全漏洞,这是大多数现代处理器 (CPU) 用来优化性能的技术。
Project Zero 的研究人员 Jann Horn 展示了一些可能的进攻场景:恶意行为者可以利用推测执行来读取本应无法被访问的系统内存。例如,未经授权方可能会读取系统内存中的敏感信息,如密码、加密密钥或是在应用中打开的敏感信息。测试还表明,在虚拟机上运行的攻击能够访问主机的物理内存,并通过这种方式获得同一物理主机上其他虚拟机的内存读取权限。
这些漏洞会影响许多 CPU,包括来自 AMD、ARM 和 Intel 的 CPU,以及运行在其上的设备和操作系统。
在得知了这个新的攻击类型后,我们的安全和产品开发团队便立即行动起来,捍卫 Google 的系统安全和用户数据。我们已经更新了受影响的系统和产品,以阻止这种新型的攻击。我们还与整个行业内的硬件和软件制造商合作,帮助保护用户和更广义的网络安全。这些努力包括协作分析和开发全新的应对方法。
由于现有的公开报道以及新闻和安全研究领域对这个问题的猜测越来越多,这可能会导致这种新型的攻击方法被更多人恶意利用,因此我们没有在原定计划的 2018 年 1 月 9 日,而是提前了一些时间进行发布(本文原文在 2018 年 1 月 3 日发表于 Google Security Blog,本文结尾处有完整链接)。
Google 产品的应对状态
下面我们列出了受影响的 Google 产品列表及其对此攻击的应对状态。由于这是一种新的攻击类型,我们的补丁状态指的是我们为防范目前已知的缺陷和进攻方式所采取的措施。这些措施已经在很多产品中起到了显著效果(甚至某些产品中从一开始就不存在推测执行漏洞)。在某些情况下,用户和客户可能需要采取额外的操作步骤来确保他们使用的是安全的产品版本。这个列表和其中的产品状态可能会随着新的进展而变化。届时我们也会更新这个列表,并告知大家。
以下未明确列出的所有Google 产品都不需要用户或客户进行操作。
Android:
拥有最新安全更新的设备已受保护。虽然这个漏洞可能造成基于 ARM 的 Android 设备信息泄露,但在我们的更新后未发现这个漏洞再次出现。
安装了最新安全更新的受支持的 Nexus 和 Pixel 设备已受保护。
更多信息请见:
https://support.google.com/faqs/answer/7622138#android
Google Apps / G Suite ( Gmail, Calendar, Drive, Site 等 ) :
无需额外的用户或客户操作。
Google Chrome:
一些用户或客户需要采取操作。更多信息请见:https://support.google.com/faqs/answer/7622138#chrome
Google Chrome OS ( 如 Chromebook ) :
需要一些额外的用户或客户操作。更多信息请见:https://support.google.com/faqs/answer/7622138#chromeos
Google Cloud Platform:
Google App Engine:无需额外的客户操作。
Google Compute Engine:需要一些额外的客户操作。更多信息请见:https://support.google.com/faqs/answer/7622138#gce
Google Kubernetes 引擎:需要一些额外的客户操作。更多信息请见:https://support.google.com/faqs/answer/7622138#gke
Google Cloud Dataflow:需要一些额外的客户操作。更多信息请见:https://support.google.com/faqs/answer/7622138#clouddataflow
Google Cloud Dataproc:需要一些额外的客户操作。更多信息请见:https://support.google.com/faqs/answer/7622138#clouddataproc
所有其他 Google Cloud 产品和服务:无需其他操作。
Google Home / Chromecast:
无需额外的用户操作。
Google Wifi / OnHub:
无需额外的用户操作。
漏洞的攻击方法及对策
要利用此漏洞,攻击者首先必须能够在目标系统上运行恶意代码。
Project Zero 的研究人员发现了三种在不同条件下有效的攻击方法(即 “变种” )。所有这三种攻击方式都可以允许拥有普通用户权限的进程执行未经授权的内存数据读取,这些数据可能包含密码、密钥资料等敏感信息。
为了提高系统的运行性能,许多 CPU 可能会选择基于被认为可能成立的假设来推测性地提前执行指令。在推测执行期间,处理器也会验证这些假设:如果它们成立,则继续之前执行的操作;如果它们不成立,则回滚之前执行的操作,并根据实际情况转向正确的执行路径。这种运行机制可能存在分支解除时没有回滚 CPU 状态而产生副作用,并且导致信息泄露。
对于三个攻击变种没有单一的解决方案:每个变种都需要独立的保护措施。许多供应商都提供了补丁,可用于应对一种或多种的此类攻击。
我们将继续应对此漏洞,并会在发布进一步措施时更新我们的产品支持页面。同时,感谢所有合作伙伴和 Google 工程师,在过去几个月里不知疲倦地为我们的用户和客户提供了安全支持。
> 本文的英文原链接:
https://security.googleblog.com/2018/01/todays-cpu-vulnerability-what-you-need.html
> Project Zero 关于此漏洞的完整报告请使用如下链接查看:
https://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html
> Google 针对此漏洞的所有产品应对状态清单请使用如下链接查看:https://support.google.com/faqs/answer/7622138
希望这篇文章可以帮助您了解到您在使用 Google 工具及服务面对漏洞时的状态及应对举措。如果您还有与此相关的疑惑及问题,欢迎在我们的微信公众平台留言,我们将收集有代表性的问题,请 Google 工程师做出解答,并会在下一期的“Android 开发者 FAQ”专题文章中统一回复大家。
领取专属 10元无门槛券
私享最新 技术干货