熔断 (安全漏洞)

熔断(英语:Meltdown),也译崩溃[3],编号CVE-2017-5754,正式名称为“Rogue Data Cache Load”,常译作“恶意数据缓存加载[4][5],是一个存在于英特尔大部分x86/x86-64微处理器、部分IBM POWER架构处理器以及部分ARM架构处理器中的关于推测执行机制的硬件设计缺陷及安全漏洞[6][7][8]。该缺陷使得低权限的进程无论是否获取特权,均可以获取受高权限保护的内存空间中的资料,漏洞利用是基于时间的旁路攻击。2018年1月,该缺陷随另一个基于推测执行机制的重量级信息安全漏洞、硬件缺陷“Spectre”(幽灵)在通用漏洞披露中公布。

漏洞图标
中国大陆熔断[1]
台湾熔毁
港澳熔毁[2]

由于英特尔处理器及IBM POWER处理器均在市场上占据极大的份额(出现缺陷的ARM处理器在缺陷被发现时尚未正式面市),这种涉及信息安全的硬件缺陷影响范围甚广,包括几乎整个x86、POWER服务器领域、几乎整个小型主机大型主机市场、个人电脑市场等都无一幸免,[9]另外该缺陷的危险程度之高(无需特权即可访问敏感资料所在的存储器空间),曾一度令信息安全人员及机构怀疑缺陷的真实性,而提前公布这些缺陷还极有可能引发全球性的信息安全灾难,因而选择先与处理器厂商及核心客户联系协商备妥修补方案再另行公布。[10][11][12][13]目前该硬件缺陷可通过软件实现规避,包括Linux系、Android、OS X/macOS、Windows等等都有相应的修复程序(像是Linux的内核页表隔离技术)[14][15][16],但是软件规避将导致处理器性能的显著下降。[17]而从根本上修复该缺陷的方法(包括修复“幽灵”缺陷)是重新设计处理器的微架构,为此英特尔、IBM及ARM都将新处理器微架构的推出时程大幅押后。[18][19][20][21]

概述

编辑

熔毁缺陷是基于设计不良的数字电路设计中出现的竞争条件,再结合许多现代微处理器非依序执行推测执行特性而产生。[22]

在具备非依序执行及推测执行特性的处理器上,处理器会检测指令的相依性,对无相依性的指令会进行预先执行,或者当处理器执行某一指令出现异常而面临停顿时,处理器会先执行与异常指令无相依性的指令以跳过停顿,这两类指令执行方式的执行结果都会保存到CPU缓存上一段时间以备使用(超过时间即抛弃结果),这些预测执行的动作包括分支预测,预读取,推测性内存访问,缓存缺失的重叠/乱序处理(MSHR)等等。[23]

某行程的某条指令需要其指定某个存储器地址的资料进行运算,基于CPU缓存的机制,该笔资料会先加载至CPU缓存上,而这个过程对于指令而言是透明的,因此其它行程是无法直接从CPU缓存上得知该笔资料的内容,而又因资料未加载至CPU寄存器上,需要该资料的指令仍无法得知资料内容,在这里,基于分级保护域机制,CPU将资料从CPU缓存加载至CPU的寄存器前是需要经过资料权限检查和存储器地址合法性检查,只有这些资料的访问权限被确认等于或低于该行程的权限、存储器地址空间的访问权限符合该行程的权限时,方能被相应行程的指令访问,否则将资料丢弃并对该指令进行异常处理。但是,而从存储器加载资料到CPU缓存时,CPU是既没有对这些资料进行权限检查也没有进行存储器地址的合法性检查的,而没有被命中的CPU缓存的资料也不会马上被清空。如果CPU缓存的资料内容无法被得知,那么这种机制的处理逻辑并不会有问题,然而如果有方法可以从其它途径“偷看”CPU缓存的资料内容的话,那么这种处理逻辑便存在缺陷。

要利用熔毁缺陷,在指令处理期间,用异常的指令使得CPU进入对异常指令的异常处理当中,同时令CPU的推测执行去先执行一些非法指令,内存访问和权限检查或存储器地址合法性检查两种操作在这里发生竞争冒险,因为受影响的处理器中的指令流水线意味着在推测执行期间,来自未经授权地址的数据几乎总是被临时加载到CPU的缓存中,即使原始读取指令由于特权检查而最终失败并且从不产生可读结果,这个时候再利用旁道攻击,利用访问CPU缓存及访问存储器的时间差,重建目标资料。这样未经授权的进程就可从映射到当前进程的内存空间的任何地址读取数据。[24]

由于许多操作系统将物理内存、内核进程和其他正在运行的用户空间进程映射到每个进程的地址空间,并依靠特权检查来防止未经授权的访问,因此,熔断缺陷有效地允许运行在用户空间的恶意进程在不需要权限提升的情况下,读取任何物理内核或其他进程的映射的内存,不管它是否应该能够这样做。若要防范这个缺陷所造成的危害,需要避免使用内存映射方式或使用内存分页隔离(均是基于软件的解决方案,后者是将用户空间的内存地址与内核空间的内存地址相隔离,但这将增加内核态与用户态之间的上下文交换开销),或避免潜在的竞争条件(修改CPU的微代码和/或执行路径)。

恶意程序利用熔毁缺陷进行攻击活动时也无法被侦测感知,是该信息安全漏洞的一大危险之处。[25][26]

受影响硬件

编辑

最初发现熔毁缺陷主要在英特尔的微处理器产品上出现,[27]但后来发现一些ARM架构的处理器也有该缺陷并被ARM确认[28],随后IBM的POWER架构的处理器也被发现有此缺陷也得到了IBM的确认。[29]同为x86架构的AMD处理器则没有被发现有熔毁缺陷。[30][31][32][33]而英特尔在处理器缺陷被发现公布数天后,才发表声明确认,除了使用依序执行的产品以外全系列的英特尔微处理器都有熔毁缺陷,并且在声明中指所有非依序执行的x86微处理器都有该缺陷以暗示竞争对手也受熔毁缺陷影响,[34]不过另一家主要的x86微处理器供应商AMD则表示其处理器产品没有熔毁缺陷,并指出“我们之所以认为AMD的处理器不受缺陷影响,是因为我们的分页架构有特权级保护”。[35]

同时期的另一个硬件缺陷——幽灵,受影响的处理器产品遍及当今所有采用分支预测技术的处理器(包括英特尔、AMD、ARM、IBM POWER等等),虽然相比熔毁缺陷更难利用(视不同CPU的微架构有所不同)[36][37][38][39]

更为具体的,有缺陷的CPU型号数量非常多,Google的Project Zero报告指出,除了安腾以及2013年前的Atom系列,英特尔自1995年发表基于P6微架构Pentium Pro开始所有具备非依序执行的CPU产品都有熔毁缺陷,[40]P6微架构是英特尔首款具备预测执行的x86(IA-32)微架构,首发产品便是Pentium Pro,而后续的英特尔x86微架构除Netburst(Pentuim 4)外都是以P6为蓝本。[41]

而ARM表示它们的主要处理器IP核不受影响,具体受影响的IP核型号已经公布。ARM Cortex-A75除了有熔毁缺陷以外还受幽灵漏洞的影响,而其它型号则没有熔毁缺陷。带预测执行技术的Cortex-R7Cortex-R8Cortex-A8Cortex-A9Cortex-A15Cortex-A17Cortex-A57Cortex-A72Cortex-A73 IP核只受幽灵的影响。[28]ARM是在英特尔之后第二个被发现有熔毁缺陷的产品的,但与英特尔的不同,ARM唯一有熔毁缺陷的IP核产品Cortex-A75尚未有实现商用。[42]另外,不使用预测执行技术的ARM架构处理器,也是当前使用数量最多的ARM产品,不受任何影响,也没有熔毁缺陷,这部分包括了大量使用在Android移动设备上的Cortex-A53 IP核,以及即将有商用实现案的Cortex-A55。仅使用Cortex-A53、Cortex-A55的处理器产品包括高通骁龙630、626/625、400系列等、联发科的MT6795等、树莓派单板电脑使用的博通SoC等等。[43][44]

IBM的POWER架构是第三个被发现有熔毁缺陷、受幽灵的处理器微架构,红帽公司在2018年1月3日公布了受这些缺陷影响的处理器型号,涵盖Z架构、POWER架构(包括最新的POWER8POWER9)的产品,并发表了适用于这些指令集架构编译版本的RHEL之修复程序;IBM也立即公布了受影响型号清单并发布了相关的固件修复程序和AIX、z/OS修复程序。[45]

甲骨文公司表示SPARC V9的系统(T5、M5、M6、S7、M7、M8、M10、M12处理器)没有熔毁缺陷,但并未说明更老的、不再进行技术支持的处理器产品是否受这两大硬件缺陷的冲击。[46]

漏洞修复

编辑

2018年初,微软发布了Windows系统的安全性修正以修补漏洞。尽管Intel多次强调安全性修正并不会大幅影响处理器的性能,然而微软的测试显示了在安装漏洞安全性修正的Windows 7Windows 8环境下,2015年(含)以前生产的Intel处理器会有性能下降,在某些测试下降幅甚至达到30%。[47][48]性能下降在较旧的微架构如Haswell上尤其明显,在使用较新的微架构SkylakeKaby LakeWindows 10系统上,降幅则较微小。[49]

对于Intel的处置方式,Linux之父林纳斯·托瓦兹强烈表达了他的不满,称Intel的修正方案是“全然的垃圾”并说Intel正在做疯狂的、毫无道理的事情。以下节录他在一则邮件中对于Intel修补方式的回应。[50][51][52][53]

The patches do things like add the garbage MSR writes to the kernel

entry/exit points. That's insane. That says "we're trying to protect

the kernel". We already have retpoline there, with less overhead.

So somebody isn't telling the truth here. Somebody is pushing complete

garbage for unclear reasons. Sorry for having to point that out.

If this was about flushing the BTB at actual context switches between

different users, I'd believe you. But that's not at all what the

patches do.

As it is, the patches are COMPLETE AND UTTER GARBAGE.

They do literally insane things. They do things that do not make

sense. That makes all your arguments questionable and suspicious. The

patches do things that are not sane.

WHAT THE F*CK IS GOING ON?

参考文献

编辑
  1. ^ 全国信息安全标准化技术委员会秘书处. 关于发布《网络安全实践指南—CPU熔断和幽灵漏洞防范指引》的通知. 全国信息安全标准化技术委员会. 2018-01-16 [2019-01-12]. (原始内容存档于2019-01-12) (中文(中国大陆)). 
  2. ^ 高源桦. 英特爾推更新修復晶片安全隱患 或致運算速度減慢. 香港01. 2018-01-06 [2018-01-07]. (原始内容存档于2020-08-08) (中文(香港)). 
  3. ^ 英特尔芯片存漏洞?苹果微软纷纷中招紧急打补丁-寰球立方体-新华网. [2018-01-07]. (原始内容存档于2020-08-10). 
  4. ^ CVE-2017-5754. [2017-02-01]. (原始内容存档于2022-08-07). 
  5. ^ CVE-2017-5754. [2018-01-01]. (原始内容存档于2022-08-07). 
  6. ^ About speculative execution vulnerabilities in ARM-based and Intel CPUs. [2018-04-26]. (原始内容存档于2021-03-27). 
  7. ^ Arm Ltd. Arm Processor Security Update. ARM Developer. [2018-04-08]. (原始内容存档于2018-04-04). 
  8. ^ Bright, Peter. Meltdown and Spectre: Here's what Intel, Apple, Microsoft, others are doing about it. Ars Technica. January 5, 2018 [January 6, 2018]. (原始内容存档于2018-05-27). 
  9. ^ CERT: "Meltdown and Spectre" CPU Security Flaw Can Only Be Fixed by Hardware Replacement – WinBuzzer. January 4, 2018 [2018-04-26]. (原始内容存档于2021-05-08). 
  10. ^ ‘It Can’t Be True.’ Inside the Semiconductor Industry’s Meltdown. [2018-01-10]. (原始内容存档于2022-08-07). 
  11. ^ Schneier, Bruce. Spectre and Meltdown Attacks Against Microprocessors - Schneier on Security. www.schneier.com. [January 9, 2018]. (原始内容存档于2021-04-12). 
  12. ^ This Week in Security: Internet Meltdown Over Spectre of CPU Bug. Cylance.com. 2018-01-05 [2018-01-30]. (原始内容存档于2018-01-09). 
  13. ^ Meltdown, Spectre: here's what you should know. Rudebaguette.com. 2018-01-08 [2018-01-30]. (原始内容存档于2018-07-05). 
  14. ^ Vaughan-Nichols, Steven J. Major Linux distros have Meltdown patches, but that's only part of the fix. ZDNet. January 11, 2018 [January 16, 2018]. (原始内容存档于2020-11-09) (英语). 
  15. ^ CVE-2017-5754. security-tracker.debian.org. [January 16, 2018]. (原始内容存档于2021-04-12). 
  16. ^ Apple Confirms 'Meltdown' and 'Spectre' Vulnerabilities Impact All Macs and iOS Devices, Some Fixes Already Released. [2018-04-26]. (原始内容存档于2020-12-05). 
  17. ^ Industry Testing Shows Recently Released Security Updates Not Impacting Performance in Real-World Deployments. Intel newsroom. January 4, 2018 [January 5, 2018]. (原始内容存档于2021-10-06). 
  18. ^ Warren, Tom. Intel processors are being redesigned to protect against Spectre - New hardware coming later this year. The Verge. March 15, 2018 [March 20, 2018]. (原始内容存档于2018-04-21). 
  19. ^ 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. March 15, 2018 [March 20, 2018]. (原始内容存档于2018-04-23). 
  20. ^ Smith, Ryan. Intel Publishes Spectre & Meltdown Hardware Plans: Fixed Gear Later This Year. AnandTech. March 15, 2018 [March 20, 2018]. (原始内容存档于2018-05-04). 
  21. ^ Coldewey, Devin. Intel announces hardware fixes for Spectre and Meltdown on upcoming chips. TechCrunch. March 15, 2018 [March 28, 2018]. (原始内容存档于2018-04-12). 
  22. ^ Ben Thomposn:「幽靈」與「熔毀」漏洞映射出了科技行業的現狀. 香港硅谷. 2018-01-10 [2018-05-28] (中文(香港)). 
  23. ^ 开年惊吓!Intel承认CPU安全漏洞存在,厂商们一夜回到20年前. 2018-01-08 [2018-05-28]. (原始内容存档于2020-02-01). 
  24. ^ 处理器A级漏洞Meltdown(熔毁)和Spectre(幽灵)分析报告. [2018-05-28]. (原始内容存档于2020-08-09). 
  25. ^ Meltdown and Spectre. Spectreattack.com. [2018-01-30]. (原始内容存档于2018-01-03). 
  26. ^ 存档副本. [2018-05-28]. (原始内容存档于2021-01-16). 
  27. ^ A Critical Intel Flaw Breaks Basic Security for Most Computers. Wired. January 3, 2018 [2018-04-08]. (原始内容存档于2018-01-03). 
  28. ^ 28.0 28.1 Arm Processor Security Update. ARM Developer. ARM Ltd. January 3, 2018 [January 5, 2018]. (原始内容存档于2018-04-04). 
  29. ^ Ibm Psirt Blog. Potential Impact on Processors in the POWER Family - IBM PSIRT Blog. Ibm.com. 2018-01-25 [2018-01-30]. (原始内容存档于2018-04-03). 
  30. ^ Metz, Cade; Perlroth, Nicole. Researchers Discover Two Major Flaws in the World's Computers. The New York Times. January 3, 2018 [January 3, 2018]. ISSN 0362-4331. (原始内容存档于2018-01-03). 
  31. ^ Intel's processors have a security bug and the fix could slow down PCs. The Verge. [January 3, 2018]. (原始内容存档于2018-01-03). 
  32. ^ Linux Gaming Performance Doesn't Appear Affected By The x86 PTI Work – Phoronix. www.phoronix.com. [January 3, 2018]. (原始内容存档于2021-02-20). 
  33. ^ Lendacky, Tom. [tip:x86/pti] x86/cpu, x86/pti: Do not enable PTI on AMD processors. lkml.org. [January 3, 2018]. (原始内容存档于2020-08-03). 
  34. ^ Patches arrive for Intel's 'Meltdown' flaw — here's how to protect your device. January 4, 2018 [2018-04-08]. (原始内容存档于2018-01-09). 
  35. ^ An Update on AMD Processor Security. [2018-04-08]. (原始内容存档于2018-03-17). 
  36. ^ Who's affected by computer chip security flaw. (原始内容存档于2018-01-04). 
  37. ^ Kernel-memory-leaking Intel processor design flaw forces Linux, Windows redesign. [2018-04-08]. (原始内容存档于2018-04-07). 
  38. ^ Staff. Meltdown and Spectre-faq-systems-spectre. Graz University of Technology. 2018 [January 3, 2018]. (原始内容存档于2018-01-03). 
  39. ^ Busvine, Douglas; Nellis, Stephen. Security flaws put virtually all phones, computers at risk. Reuters. Thomson-Reuters. January 3, 2018 [January 8, 2018]. (原始内容存档于2018-01-03). 
  40. ^ Google: Almost All CPUs Since 1995 Vulnerable To "Meltdown" And "Spectre" Flaws. [2018-04-08]. (原始内容存档于2021-04-20). 
  41. ^ P6 family microarchitecture. www.jaist.ac.jp. [2018-04-08]. (原始内容存档于2020-01-03). 
  42. ^ Understanding Those Alarming Computer Chip Security Holes: 'Meltdown' and 'Spectre'. [2018-04-08]. (原始内容存档于2021-03-08). 
  43. ^ 'Spectre' and 'Meltdown': New CPU vulnerabilities affect most smartphones and computers. January 4, 2018 [2018-04-08]. (原始内容存档于2020-09-27). 
  44. ^ Why Raspberry Pi isn't vulnerable to Spectre or Meltdown. Raspberry Pi. 2018-01-05 [2018-01-30]. (原始内容存档于2021-04-09). 
  45. ^ Tung, Liam. Meltdown-Spectre: IBM preps firmware and OS fixes for vulnerable Power CPUs. ZDNet. 2018-01-10 [2018-01-30]. (原始内容存档于2020-08-03). 
  46. ^ Solaris+SPARC is Meltdown (CVE-2017-5754) free - Tales from the Datacenter. Tales from the Datacenter. January 22, 2018 [January 23, 2018]. (原始内容存档于2021-07-09) (美国英语). 
  47. ^ Intel 64 處理器硬體全部中招,軟體修復漏洞最高導致 30% 效能下滑 | T客邦. PCADV 电脑王 - 狂操、硬干、玩真的. 2018-01-04 [2020-02-02]. (原始内容存档于2020-12-01) (中文(台湾)). 
  48. ^ Williams, Chris. Kernel-memory-leaking Intel processor design flaw forces Linux, Windows redesign. www.theregister.co.uk. [2020-02-02]. (原始内容存档于2018-04-07) (英语). 
  49. ^ 安全漏洞作祟、微軟:更新會拖慢電腦. [2018-01-10]. (原始内容存档于2018-01-10). 
  50. ^ Linux-Kernel Archive: Re: [RFC 09/10] x86/enter: Create macros to restrict/unrestrict Indirect Branch Speculation. lkml.iu.edu. [2020-02-02]. (原始内容存档于2020-11-09). 
  51. ^ Linus Torvalds declares Intel fix for Meltdown/Spectre ‘COMPLETE AND UTTER GARBAGE’. TechCrunch. [2020-02-02] (美国英语). [失效链接]
  52. ^ Ranger, Steve. Spectre and Meltdown: Linux creator Linus Torvalds criticises Intel's 'garbage' patches. ZDNet. [2020-02-02]. (原始内容存档于2020-12-25) (英语). 
  53. ^ Patrizio, Andy. Linus Torvalds blasts Intel’s Meltdown fixes as ‘garbage’. Network World. 2018-01-24 [2020-02-02]. (原始内容存档于2020-09-24) (英语). 

外部链接

编辑

参见

编辑