幽灵(英语:Spectre)是一个存在于分支预测实现中的硬件缺陷及安全漏洞,含有预测执行功能的现代微处理器均受其影响[1][2]漏洞利用是基于时间的旁路攻击,允许恶意进程获得其他程序在映射内存中的资料内容。[3][4][5]Spectre是一系列的漏洞,基于攻击行为类型,赋予了两个通用漏洞披露ID,分别是CVE-2017-5753(bounds check bypass,边界检查绕过)和CVE-2017-5715(branch target injection,分支目标注入),于2018年1月随同另一个也基于推测执行机制的、属于重量级资讯安全漏洞的硬件缺陷“Meltdown”(熔毁)一同公布。由于该缺陷是推测执行机制导致的,加上不同处理器架构对推测执行又有不同的实现方式,因此这个缺陷无法获得根源上的修复而只能采取“见招拆招”式的方法防范,而且因机制所致,各种解决方案还有不可预料的性能下降。[6]

该漏洞的徽标,特征是手中的树枝(branch,有分支、分叉之意)

CVE-2017-5753依赖于运行中的即时编译(JIT)系统,用于Javascript的JIT引擎已被发现存在此漏洞。网站可以读取浏览器中存储的另一个网站的数据,或者浏览器本身的存储器。对此Firefox 57.0.4(部分)及Chrome 64通过为每个网站分配专用的浏览器程序来阻挡此类攻击[7][8];操作系统则是通过改写的编译器重新编译以阻挡利用该漏洞进行攻击的行为。

针对CVE-2017-5715,除了软件层面上进行修改以外,处理器也需要通过微指令更新来阻挡这类攻击。[9][10][11]

随着幽灵缺陷派生的安全漏洞(攻击手段变体,包括CVE-2018-3693CVE-2018-3640CVE-2018-3639等)被逐一发现,英特尔等CPU开发商不得不在修复既有缺陷的同时资助第三方资讯安全团队继续发掘潜在的缺陷以破财消灾。[12]

历史

编辑

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

细节

编辑

Spectre是一个可以迫使用户操作系统上的其他程序访问其程序电脑存储器空间中任意位置的漏洞。

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

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

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

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

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

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

影响

编辑

截至2018年,几乎所有的电脑系统都受到Spectre的影响,包括台式电脑、手提电脑和移动设备。具体而言,Spectre已证明可以在主要的Intel、部分ARM的处理器上工作,特定情况下则在AMD架构下能运作[18][19]。英特尔正式回应了所报告的安全漏洞[20]。根据AMD的一份声明,Spectre第二个变种没有发生在AMD处理器上,且由于AMD架构之间存在差异,“风险接近于零”[21]

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

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

防御措施

编辑

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

尽管如此,已有几个程序帮助保护家庭电脑和相关装置免于“Meltdown”和“Spectre”漏洞的攻击[24][25][26][27]

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

2018年1月4日,Google在其安全部落格上详细介绍了新技术“Retpoline”,该技术能够以微不足道的处理器开销克服Spectre漏洞。它涉及在编译器编译时让间接分支跳转到不同的目标,减少易受攻击的乱序执行发生[30][31]。虽然这项技术面向x86指令集开发,Google工程师认为该技术也可以用于其他处理器[32]。2019年2月,Google研究人员发表论文认为光靠软件不能完全避开Spectre漏洞,必须对CPU设计进行修改才能避免[33]

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

对于幽灵的变体2——分支目标注入,除了软件的规避阻挡措施外,还至少需要受影响的处理器获得微指令更新或固件修复程序。[36]受缺陷影响最大的英特尔已经为新近出货和一些较老的处理器推出微码更新[37][38],但是该措施通常需要主板厂商的配合,以便将处理器厂商提供的微码更新集成至其主板的BIOS/UEFI固件上,因此会出现一些较老的、早已不享有保固服务的主板没有获得微指令更新的情况;而部分较老的处理器,也是未能获得微码更新。[39]对于一些主板厂商未有发布带微码更新固件,但处理器厂商已经推出微码更新修复程序的,有的用户会尝试以更改主板固件的方式安装微码更新。[40]

如果BIOS固件得不到更新,微码更新也可以由Windows/Linux等操作系统进行。

英特尔在其新出货的处理器上内建了对于阻挡利用该类缺陷进行攻击的微码更新,并在2018年下半年推出硬件层级上带特权隔离措施和行程隔离的处理器产品;[41][42][43][44][45]ARM则是发布了针对受影响处理器核心的固件修复程序;[46]AMD尽管宣称未受CVE-2017-5715的影响,但仍旧发布了相应的微指令更新。[47]

其它

编辑

在Windows平台上有软件可侦测电脑硬件受Spectre、Meltdown影响的程度和修补状态。[48][49][50]

参考文献

编辑
  1. ^ Greenberg, Andy. A Critical Intel Flaw Breaks Basic Security for Most Computers. 连线. January 3, 2018 [January 3, 2018]. (原始内容存档于January 3, 2018). 
  2. ^ Bright, Peter. Meltdown and Spectre: Here's what Intel, Apple, Microsoft, others are doing about it. Ars Technica. 2018-01-05 [2018-01-06]. (原始内容存档于2018-05-26). 
  3. ^ 3.0 3.1 3.2 Staff. Meltdown and Spectre. Graz University of Technology. 2018 [January 3, 2018]. (原始内容存档于2018-01-03). 
  4. ^ 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) (美国英语). 
  5. ^ 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). 
  6. ^ Ben Thomposn:「幽靈」與「熔毀」漏洞映射出了科技行業的現狀 (中文(台湾)). 
  7. ^ 7.0 7.1 7.2 Mozilla Foundation Security Advisory 2018-01. [2018-01-06]. (原始内容存档于2018-03-14). 
  8. ^ 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.
  9. ^ KB4091663:Intel 微指令更新. 微软. [2018-06-20]. (原始内容存档于2018-06-29). 
  10. ^ 推出更新,以啟用防範 Spectre Variant 2 的緩和措施. 微软. [2018-06-20]. (原始内容存档于2018-06-28). 
  11. ^ KB4090007:Intel 微指令更新. support.microsoft.com. [2018-06-20]. (原始内容存档于2018-06-29). 
  12. ^ New Spectre 1.1 and Spectre 1.2 CPU Flaws Disclosed. BleepingComputer. [2018-08-05]. (原始内容存档于2018-07-16) (美国英语). 
  13. ^ Gibbs, Samuel. Meltdown and Spectre: ‘worst ever’ CPU bugs affect virtually all computers. 卫报. 2018-01-04 [2018-01-06]. (原始内容存档于2018-01-06). 
  14. ^ 14.0 14.1 Spectre Attacks: Exploiting Speculative Execution (PDF). 2018. (原始内容存档 (PDF)于January 3, 2018). 
  15. ^ Reading privileged memory with a side-channel. 2018 [2018-01-06]. (原始内容存档于2018-01-04). 
  16. ^ Mitigations landing for new class of timing attack. 2018 [2018-01-06]. (原始内容存档于2018-01-04). 
  17. ^ Meltdown (PDF). 2018 [2018-01-06]. (原始内容 (PDF)存档于2018-01-04). 
  18. ^ Staff. Meltdown and Spectre-faq-systems-spectre. Graz University of Technology. 2018 [January 4, 2018]. (原始内容存档于2018-01-03) (英语). 
  19. ^ 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). 
  20. ^ Staff. Intel Responds To Security Research Findings. Intel. January 3, 2018 [January 4, 2018]. (原始内容存档于2018-01-03). 
  21. ^ An Update on AMD Processor Security. 超威半导体. 2018 [January 4, 2018]. (原始内容存档于January 4, 2018). 
  22. ^ 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). 
  23. ^ 安全漏洞作祟、微軟:更新會拖慢電腦. [2018-01-10]. (原始内容存档于2018-01-10). 
  24. ^ 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]. (原始内容存档于2018-01-06). 
  25. ^ 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]. (原始内容存档于2018-01-10). 
  26. ^ Chacos, Brad. How to protect your PC from the major Meltdown and Spectre CPU flaws. PC World. January 4, 2018 [January 4, 2018]. (原始内容存档于2018-01-04). 
  27. ^ 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). 
  28. ^ Google’s Mitigations Against CPU Speculative Execution Attack Methods. support.google.com. [January 4, 2018]. (原始内容存档于January 3, 2018) (英语). 
  29. ^ Mitigations landing for new class of timing attack. Mozilla Security Blog. [January 4, 2018]. (原始内容存档于2018-01-04) (美国英语). 
  30. ^ More details about mitigations for the CPU Speculative Execution issue. [2018-01-06]. (原始内容存档于2018-01-05). 
  31. ^ Google Says CPU Patches Cause 'Negligible Impact On Performance' With New 'Retpoline' Technique - Slashdot. tech.slashdot.org. [2018-01-06]. (原始内容存档于2018-04-08). 
  32. ^ Retpoline: a software construct for preventing branch-target-injection - Google Help. support.google.com. (原始内容存档于January 5, 2018). 
  33. ^ Mcilroy, Ross; Sevcik, Jaroslav; Tebbi, Tobias; Titzer, Ben L.; Verwaest, Toon. Spectre is here to stay: An analysis of side-channels and speculative execution. arXiv:1902.05178 [cs]. 2019-02-13 [2019-02-22]. (原始内容存档于2019-02-22). 
  34. ^ How Will the Meltdown and Spectre Flaws Affect My PC?. How-To Geek. [2018-01-06]. (原始内容存档于2018-01-20). 
  35. ^ Meltdown 與 Spectre 的最新修補狀況如何了?如何評量效能降低程度?. TechNews 科技新报. [2018-06-20]. (原始内容存档于2018-06-20) (中文(台湾)). 
  36. ^ US, Dell. 微处理器旁路攻击分析漏洞支持. 戴尔. [2018-06-20]. (原始内容存档于2018-06-20) (中文(中国大陆)). 
  37. ^ microcode revision guidance (PDF). Intel. [2018-06-20]. (原始内容存档 (PDF)于2018-06-24). 
  38. ^ Intel 處理器微碼更新進度報告:修復至第六代 Core 處理器 Skylake,下一步將延伸至 Sandy Bridge. 2018-02-23 [2018-06-20]. (原始内容存档于2018-06-20) (中文(台湾)). 
  39. ^ Intel 停止舊款處理器 Spectre 漏洞安全性更新. TechNews 科技新报. [2020-01-01]. (原始内容存档于2020-01-01) (中文(台湾)). 
  40. ^ Intel 處理器微碼更新進度報告:Broadwell 與 Haswell 修正完畢釋出,附贈 UBU 更新微碼教學. 2018-03-01 [2018-06-20]. (原始内容存档于2018-06-20) (中文(台湾)). 
  41. ^ Warren, Tom. Intel processors are being redesigned to protect against Spectre - New hardware coming later this year. The Verge. 2018-03-15 [2018-03-15]. (原始内容存档于2018-04-21). 
  42. ^ Shankland, Stephen. Intel will block Spectre attacks with new chips this year - Cascade Lake processors for servers, coming this year, will fight back against a new class of vulnerabilities, says CEO Brian Krzanich.. CNET. 2018-03-15 [2018-03-15]. (原始内容存档于2018-04-23). 
  43. ^ Coldewey, Devin. Intel announces hardware fixes for Spectre and Meltdown on upcoming chips. TechCrunch. 2018-03-15 [2018-03-28]. (原始内容存档于2018-04-12). 
  44. ^ 硬體修復最實在!Intel 下半年推出處理器將對 Meltdown 與 Spectre variant 2 免疫. 2018-03-16 [2018-06-20]. (原始内容存档于2018-06-20) (中文(台湾)). 
  45. ^ Intel Cascade Lake 和新系列8th Gen Core将在硬件上修复Spectre #2和Meltdown漏洞. [2018-06-20]. (原始内容存档于2018-06-20). 
  46. ^ 关于Spectre和Meltdown的一则笑话【Intel,AMD & ARM】【2018开年巨献】. [2018-06-20]. (原始内容存档于2018-06-20). 
  47. ^ AMD 處理器安全性. AMD. [2018-06-20]. (原始内容存档于2018-06-20) (中文(繁体)). 
  48. ^ 你的電腦對 Meltdown 和 Spectre 免疫嗎?快下載 InSpectre 自我檢測. 2018-01-18 [2018-06-20]. (原始内容存档于2018-06-20) (中文(台湾)). 
  49. ^ InSpectre - Spectre/Meltdown脆弱性に対する対応状況を確認できるWindows用ユーティリティ | ソフトアンテナブログ. www.softantenna.com. [2018-06-20]. (原始内容存档于2018-06-20) (日语). 
  50. ^ GRC InSpectre. www.grc.com. [2018-06-20]. (原始内容存档于2018-06-20) (英语). 

外部链接

编辑

参见

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