本页使用了标题或全文手工转换

幽灵 (安全漏洞)

维基百科,自由的百科全书
跳转至: 导航搜索
该漏洞的徽标,特征是手中的树枝(branch,有分支、分叉之意)

幽灵英语:Spectre)是一个存在于分支预测实现中的硬件漏洞,含有预测执行功能的现代微处理器均受其影响[1],允许恶意进程访问其他程序在映射内存中的内容[2][3][4]。Spectre的两个通用漏洞披露ID分别是CVE-2017-5753CVE-2017-5715(边界检查绕过、分支目标注射)。CVE-2017-5753依赖于已开启的即时编译(JIT),用于Javascript的JIT引擎已被发现存在此漏洞。网站可以读取浏览器中存储的另一个网站的数据,或者浏览器本身的内存。Firefox 57.0.4(部分)及Chrome 64通过为每个网站分配专用的浏览器进程来解决此问题[5][6]

历史[编辑]

Spectre由Google Project Zero的Jann Horn独立发现,Paul Kocher英语Paul Kocher协同Daniel Genkin、Mike Hamburg、Moritz Lipp和Yuval Yarom也合作发现了此问题。微软漏洞研究(Microsoft Vulnerability Research)则将此问题的波及范围扩展到了浏览器JavaScript的JIT引擎[2][5]。2017年6月1日,受影响的硬件供应商知悉此问题。2018年1月3日,此漏洞与另一安全漏洞熔毁英语:Meltdown)被一同公布[7]

细节[编辑]

Spectre是一个可以迫使用户操作系统上的其他程序访问其程序電腦記憶體空间中任意位置的漏洞。

Spectre不是单个易于修复的漏洞,而是[8]一类[9]潜在漏洞的总和。它们都利用了一种现代微处理器为降低内存延迟、加快执行速度的常用方法“预测执行”的副作用。具体而言,Spectre着重于分支预测,这是预测执行的一部分。与同时披露的相关漏洞“熔毁”不同,Spectre不依赖单个处理器上記憶體管理及系统保护的特定功能,而是一个更为通用的漏洞。

白皮书的出发点是,对分支预测机制进行边信道定时攻击[10],它是现代微处理器乱序执行的一部分。虽然,处理器的文档保证在架构级别,预测错误所导致的任何后果都会在得到正确结果之后取消,然而预测执行仍然有可能留下副作用,例如已加载的缓存线。这些所谓的非功能性方面随后便可影响计算环境。如果这种副作用(包括但不限于内存访问时间)对恶意程序可见,并且能设法与受害行程所保存的敏感数据产生关系,则这些副作用可能会使敏感数据可被识别。即使在架构级别,正式的安全设计能正常工作,这种情况仍然会发生;这种情况下,用于代码执行的、较低级的微架構优化仍然有可能泄漏对正常程序正确执行不是非常重要的某些信息。

Spectre论文展示了完成攻击的四个基本步骤:

  1. 首先,论文阐述了在现代处理器中的,恶意程序可以通过程序内部的运行操纵分支预测逻辑,使得分支预测命中或者失败的情况可以提前判断。
  2. 随后展示了,可以可靠地对缓存命中和未命中间的差异进行计时,因此,本来应该是简单的非功能差异,实际却可作为秘密信道,从无关信息中提取进程的内部工作信息。
  3. 然后,论文以一个简单的示例程序和一个在浏览器沙盒中运行的JavaScript片段为基础,将结果与返回导向编程攻击等原理进行综合;在这两种情况下,只需简单使用由普通编译器或现有浏览器中JavaScript引擎生成的代码,利用其中条件分支的预测执行,受害者进程的整个地址空间(即运行中程序的内容)都将可读。其基本思想是,在现有的代码中寻找预测执行可能涉及到不可访问数据的地方,操纵处理器,使得预测执行必须触及该数据的实际内容,然后对处理器的副作用计时,这时预取机制已经加载完成了一条缓存线,结果就是访问这条缓存线的数据速度会更快。
  4. 最后,本文将这种攻击一般化到受害进程的任何非功能状态上。紧接着讨论了甚至像总线仲裁延迟这样非常不明显的非功能性效应。

Spectre和Meltdown之间的根本区别在于,后者依赖于现代英特尔处理器的特定功能:CPU可能会被诱使预测执行到受保护的系统数据中,被迫进入并处理相关的安全异常。Spectre中的统计学特征更为明显:尽最大努力以某种方式调教处理器的分支预测机制,并使用现有库中可用(或不可用)的代码来实现基本相同的事。

或者换句话说,正如Meltdown论文所说的那样:“Meltdown在几个方面与Spectre攻击有所不同,其中值得注意的是,Spectre需要定制受害者进程的软件环境,但适用的CPU更加广泛,并且KAISER对其无效。”[11]

影响[编辑]

截至2018年,几乎所有的计算机系统都受到Spectre的影响,包括台式机、笔记本电脑和移动设备。具体而言,Spectre已证明可以在IntelAMDARM的处理器上工作[12][13]。英特尔正式回应了所报告的安全漏洞[14]。根据AMD的一份声明,Spectre第二个变种没有发生在AMD处理器上,且由于AMD架构之间存在差异,“风险接近于零”[15]

目前,Spectre只会造成用户级别的程序互相影响,但似乎这种攻击方式可以进一步开发。虽然比熔毁更难正确使用,但由于它的一般性,Spectre可能会更加难以抵御。原来的白皮书甚至推测,为了完全处理这个问题,可能需要对微处理器体系结构进行重大改变。

而且,对于云提供商而言,Spectre比Meltdown影响更大。Meltdown可使未经授权的应用程序读取特权内存,并获取运行在同一云服务器上进程的敏感数据,而Spectre可让恶意程序诱使虚拟机管理程序将数据传输到在其上运行的客户系统[16]

防御措施[编辑]

由于Spectre是一整类的攻击,所以一个补丁很可能无法完全解决。虽然这个漏洞的一些特殊案例已经在处理,但专门介绍“Spectre”和“Meltdown”的网站也说:“Spectre不易修复,所以会长期困扰我们。”[2]微软 Windows 系列操作系统于2018年初发布了系统补丁,英特尔公司于事件发生阶段反复表示修复漏洞对性能影响不大,但微软测试表明若安裝Windows 7、Windows 8 操作系统、並使用2015年或更早出厂的英特尔芯片,更新后速度會明显变慢,慢到用户能感受到差异,也有说法是性能约下降30%,尤其是较旧的Haswell架构及之前芯片。但若是安装Windows 10并使用Skylake、Kaby Lake等之后更新版英特尔芯片,则性能下降状况并不明显。[17]

尽管如此,已有几个程序帮助保护家庭计算机和相关设备免于“Meltdown”和“Spectre”漏洞的攻击[18][19][20][21]

嵌入在网站中的JavaScript也可用于攻击[8]Chrome 64将默认包含针对此攻击的缓解措施,Chrome 63用户可以通过启用站点隔离功能(chrome://flags#enable-site-per-process)手动缓解攻击[22]。在Firefox 57.0.4中,Mozilla正在降低JavaScript计时器的精度,以帮助防止计时攻击,同时计划用于将来版本的时间模糊技术也在工作中[5][23]。此外,基于浏览器的漏洞利用可以通过禁用JavaScript(例如NoScript)防止。[來源請求]

2018年1月4日,Google在其安全博客上详细介绍了新技术“Retpoline”,该技术能够以微不足道的处理器开销克服Spectre漏洞。它涉及在编译器编译时让间接分支跳转到不同的目标,减少易受攻击的乱序执行发生[24][25]。虽然这项技术面向x86指令集开发,Google工程师认为该技术也可以用于其他处理器[26]

也有人提出[27],在有选择性刷新轉譯後備緩衝區(TLB)功能的处理器上,可以减少修补漏洞造成的性能损失。该特性在Intel 64架构下称为进程上下文标识符(PCID),而在Alpha下称为地址空间号码(ASN)。这是因为,选择性刷新可隔离进程,及对漏洞至关重要的轉譯後備緩衝區(TLB)行为,而不会不断刷新整个TLB,这是性能损失的主要原因。

参考文献[编辑]

  1. ^ Greenberg, Andy. A Critical Intel Flaw Breaks Basic Security for Most Computers. 连线. January 3, 2018 [January 3, 2018]. (原始内容存档于January 3, 2018). 
  2. ^ 2.0 2.1 2.2 Staff. Meltdown and Spectre. Graz University of Technology. 2018 [January 3, 2018]. (原始内容存档于January 3, 2018). 
  3. ^ Metz, Cade; Perlroth, Nicole. Researchers Discover Two Major Flaws in the World’s Computers. 纽约时报. January 3, 2018 [January 3, 2018]. ISSN 0362-4331. (原始内容存档于January 3, 2018) (美国英语). 
  4. ^ Warren, Tom. Intel’s processors have a security bug and the fix could slow down PCs. The Verge. January 3, 2018 [January 3, 2018]. (原始内容存档于January 3, 2018). 
  5. ^ 5.0 5.1 5.2 Mozilla Foundation Security Advisory 2018-01
  6. ^ https://www.theregister.co.uk/2018/01/04/intel_amd_arm_cpu_vulnerability/ Meltdown, Spectre: The password theft bugs at the heart of Intel CPUs, the Register, 2018-01-04.
  7. ^ Gibbs, Samuel. Meltdown and Spectre: ‘worst ever’ CPU bugs affect virtually all computers. 衛報. 2018-01-04 [2018-01-06]. (原始内容存档于2018-01-06). 
  8. ^ 8.0 8.1 Spectre Attacks: Exploiting Speculative Execution (PDF). 2018. (原始内容存档 (PDF)于January 3, 2018). 
  9. ^ Reading privileged memory with a side-channel. 2018. (原始内容存档于January 4, 2018). 
  10. ^ Mitigations landing for new class of timing attack. 2018. (原始内容存档于January 4, 2018). 
  11. ^ Meltdown (PDF). 2018. (原始内容存档 (PDF)于January 4, 2018). 
  12. ^ Staff. Meltdown and Spectre-faq-systems-spectre. Graz University of Technology. 2018 [January 4, 2018]. (原始内容存档于January 3, 2018) (英语). 
  13. ^ Busvine, Douglas; Nellis, Stephen. Security flaws put virtually all phones, computers at risk. Reuters. Thomson-Reuters. January 3, 2018 [January 3, 2018]. (原始内容存档于January 3, 2018). 
  14. ^ Staff. Intel Responds To Security Research Findings. Intel. January 3, 2018 [January 4, 2018]. (原始内容存档于January 3, 2018). 
  15. ^ An Update on AMD Processor Security. 超威半导体. 2018 [January 4, 2018]. (原始内容存档于January 4, 2018). 
  16. ^ Fox-Brewster, Thomas. Massive Intel Vulnerabilities Just Landed -- And Every PC User On The Planet May Need To Update. Forbes. Forbes Media LLC. January 3, 2018 [January 3, 2018]. (原始内容存档于January 3, 2018). 
  17. ^ 安全漏洞作祟、微軟:更新會拖慢電腦
  18. ^ Metz, Cade; Chen, Brian X. What You Need to Do Because of Flaws in Computer Chips. The New York Times. January 4, 2018 [January 5, 2018]. 
  19. ^ Pressman, Aaron. Why Your Web Browser May Be Most Vulnerable to Spectre and What to Do About It. Fortune (magazine). January 5, 2018 [January 5, 2018]. 
  20. ^ Chacos, Brad. How to protect your PC from the major Meltdown and Spectre CPU flaws. PC World. January 4, 2018 [January 4, 2018]. (原始内容存档于January 4, 2018). 
  21. ^ Elliot, Matt. Security - How to protect your PC against the Intel chip flaw - Here are the steps to take to keep your Windows laptop or PC safe from Meltdown and Spectre.. CNET. January 4, 2018 [January 4, 2018]. (原始内容存档于January 4, 2018). 
  22. ^ Google’s Mitigations Against CPU Speculative Execution Attack Methods. support.google.com. [January 4, 2018]. (原始内容存档于January 3, 2018) (英语). 
  23. ^ Mitigations landing for new class of timing attack. Mozilla Security Blog. [January 4, 2018]. (原始内容存档于January 4, 2018) (美国英语). 
  24. ^ More details about mitigations for the CPU Speculative Execution issue. (原始内容存档于January 5, 2018). 
  25. ^ Google Says CPU Patches Cause 'Negligible Impact On Performance' With New 'Retpoline' Technique - Slashdot. tech.slashdot.org. 
  26. ^ Retpoline: a software construct for preventing branch-target-injection - Google Help. support.google.com. (原始内容存档于January 5, 2018). 
  27. ^ How Will the Meltdown and Spectre Flaws Affect My PC?. How-To Geek. 

外部链接[编辑]

参见[编辑]

  • 熔毁 (安全漏洞) - 英特尔微处理器中的硬件漏洞,允许未经授权的进程访问特权内存。
  • 行锤击英语Row hammer - 动态随机存取存储器中的意外副作用,导致存储单元之间发生电气相互作用。