熔毁 (安全漏洞)

熔毁（英語：Meltdown），也译崩溃，编号CVE-2017-5754，正式名稱爲「Rogue Data Cache Load」，常譯作「恶意数据缓存加载」，是一个存在于英特爾大部分x86/x86-64微处理器、部分IBM POWER架構處理器以及部分ARM架構處理器中的關於推測執行機制的硬件设计缺陷及安全漏洞。该缺陷使得低權限的进程無論是否取得特權，均可以獲取受高權限保護的内存空間中的資料，漏洞利用是基於時間的旁路攻擊。2018年1月，该缺陷隨另一個基於推測執行機制的重量級資訊安全漏洞、硬體缺陷「Spectre」（幽靈）在通用漏洞披露中公布。 由於英特爾處理器及IBM POWER處理器均在市場上佔據極大的份額（出現缺陷的ARM處理器在缺陷被發現時尚未正式面市），這種涉及資訊安全的硬體缺陷影響範圍甚廣，包括幾乎整個x86、POWER伺服器領域、幾乎整個小型主機及大型主機市場、個人電腦市場等都無一倖免，另外該缺陷的危險程度之高（無需特權即可存取敏感資料所在的記憶體空間），曾一度令資安人員及機構懷疑缺陷的真實性，而提前公佈這些缺陷還極有可能引發全球性的資安災難，因而選擇先與處理器廠商及核心客戶聯絡協商備妥修補方案再另行公佈。目前該硬體缺陷可通過軟體實作規避，包括Linux系、Android、OS X/macOS、Windows等等都有相應的修復程式（像是Linux的内核页表隔离技術），但是軟體規避將導致處理器效能的顯著下降。而從根本上修復該缺陷的方法（包括修復「幽靈」缺陷）是重新設計處理器的微架構，為此英特爾、IBM及ARM都將新處理器微架構的推出時程大幅押後。 熔毀缺陷是基於設計不良的數位電路設計中出現的竞争条件，再結合許多現代微處理器的非依序執行及推測執行特性而產生。 在具備非依序執行及推測執行特性的處理器上，處理器會檢測指令的相依性，對無相依性的指令會進行預先執行，或者當處理器執行某一指令出現異常而面臨停頓時，處理器會先執行與異常指令無相依性的指令以跳過停頓，這兩類指令執行方式的執行結果都會保存到CPU快取上一段時間以備使用（超過時間即拋棄結果），這些預測執行的動作包括分支预测，预读取，推测性内存访问，缓存缺失的重叠/乱序处理（MSHR）等等。 某行程的某條指令需要其指定某個記憶體位址的資料進行運算，基於CPU快取的機制，該筆資料會先載入至CPU快取上，而這個過程對於指令而言是透明的，因此其它行程是無法直接從CPU快取上得知該筆資料的內容，而又因資料未載入至CPU暫存器上，需要該資料的指令仍無法得知資料內容，在這裏，基於分级保护域機制，CPU將資料從CPU快取載入至CPU的暫存器前是需要經過資料權限檢查和記憶體位址合法性檢查，只有這些資料的存取權限被確認等於或低於該行程的權限、記憶體位址空間的存取權限符合該行程的權限時，方能被相應行程的指令存取，否則將資料丟棄並對該指令進行異常處理。但是，而從記憶體載入資料到CPU快取時，CPU是既沒有對這些資料進行權限檢查也沒有進行記憶體位址的合法性檢查的，而沒有被命中的CPU快取的資料也不會馬上被清空。如果CPU快取的資料內容無法被得知，那麼這種機制的處理邏輯並不會有問題，然而如果有方法可以從其它途徑「偷看」CPU快取的資料內容的話，那麼這種處理邏輯便存在缺陷。 要利用熔毀缺陷，在指令处理期间，用異常的指令使得CPU進入對異常指令的異常處理當中，同時令CPU的推測執行去先執行一些非法指令，内存访问和權限检查或記憶體位址合法性檢查兩種操作在這裏發生竞争冒险，因为受影响的处理器中的指令流水线意味着在推测执行期间，来自未经授权地址的数据几乎总是被临时加载到CPU的缓存中，即使原始读取指令由于特权检查而最终失败并且从不产生可读结果，這個時候再利用旁道攻击，利用存取CPU快取及存取記憶體的時間差，重建目標資料。這樣未经授权的进程就可从映射到当前进程的内存空间的任何地址读取数据。 由于许多操作系统将物理内存、内核进程和其他正在运行的用户空间进程映射到每个进程的地址空间，并依靠特权检查来防止未经授权的访问，因此，熔毁缺陷有效地允许运行在用户空间的恶意进程在不需要权限提升的情况下，读取任何物理内核或其他进程的映射的内存，不管它是否应该能够这样做。若要防范这个缺陷所造成的危害，需要避免使用内存映射方式或使用内存分页隔离（均是基于软件的解决方案，后者是将用户空间的内存地址与内核空间的内存地址相隔离，但这将增加内核态与用户态之间的上下文交换开销），或避免潜在的竞争条件（修改CPU的微代码和/或执行路径）。 惡意程式利用熔毀缺陷進行攻擊活動時也無法被偵測感知，是該資安漏洞的一大危險之處。 最初發現熔毀缺陷主要在英特爾的微處理器產品上出現，但後來發現一些ARM架構的處理器也有該缺陷並被ARM確認，隨後IBM的POWER架構的處理器也被發現有此缺陷也得到了IBM的確認。同為x86架構的AMD處理器則沒有被發現有熔毀缺陷。而英特爾在處理器缺陷被發現公佈數天後，才發表聲明確認，除了使用依序執行的產品以外全系列的英特爾微處理器都有熔毀缺陷，並且在聲明中指所有非依序執行的x86微處理器都有該缺陷以暗示競爭對手也受熔毀缺陷影響，不過另一家主要的x86微處理器供應商AMD則表示其處理器產品沒有熔毀缺陷，並指出「我們之所以認爲AMD的處理器不受缺陷影響，是因爲我們的分頁架構有特權級保護」。 同時期的另一個硬體缺陷——幽靈，受影響的處理器產品遍及當今所有採用分支預測技術的處理器（包括英特爾、AMD、ARM、IBM POWER等等），雖然相比熔燬缺陷更難利用（視不同CPU的微架構有所不同） 更爲具體的，有缺陷的CPU型號數量非常多，Google的Project Zero報告指出，除了安騰以及2013年前的Atom系列，英特爾自1995年發表基於P6微架構的Pentium Pro開始所有具備非依序執行的CPU產品都有熔燬缺陷，P6微架構是英特爾首款具備预测执行的x86（IA-32）微架構，首發產品便是Pentium Pro，而後續的英特爾x86微架構除Netburst(Pentuim 4)外都是以P6爲藍本。 而ARM表示它們的主要處理器IP核不受影響，具體受影響的IP核型號已經公佈。ARM Cortex-A75除了有熔毀缺陷以外還受幽靈漏洞的影響，而其它型號則沒有熔毀缺陷。帶預測執行技術的Cortex-R7、Cortex-R8、Cortex-A8、Cortex-A9、Cortex-A15、Cortex-A17、Cortex-A57、Cortex-A72及Cortex-A73 IP核只受幽靈的影響。ARM是在英特爾之後第二個被發現有熔毀缺陷的產品的，但與英特爾的不同，ARM唯一有熔燬缺陷的IP核產品Cortex-A75尚未有實作商用。另外，不使用預測執行技術的ARM架構處理器，也是當前使用數量最多的ARM產品，不受任何影響，也沒有熔燬缺陷，這部分包括了大量使用在Android行動裝置上的Cortex-A53 IP核，以及即將有商用實作案的Cortex-A55。僅使用Cortex-A53、Cortex-A55的處理器產品包括高通的驍龍630、626/625、400系列等、聯發科的MT6795等、樹莓派單板電腦使用的博通SoC等等。 IBM的POWER架構是第三個被發現有熔燬缺陷、受幽靈的處理器微架構，紅帽公司在2018年1月3日公佈了受這些缺陷影響的處理器型號，涵蓋Z架構、POWER架構（包括最新的POWER8及POWER9）的產品，並發表了適用於這些指令集架構編譯版本的RHEL之修復程式；IBM也立即公佈了受影響型號清單並發佈了相關的韌體修復程式和AIX、z/OS修復程式。 甲骨文公司表示SPARC V9的系統（T5、M5、M6、S7、M7、M8、M10、M12處理器）沒有熔燬缺陷，但並未說明更老的、不再進行技術支援的處理器產品是否受這兩大硬體缺陷的衝擊。 2018年初，微軟發佈了Windows系統的安全性修正以修補漏洞。儘管Intel多次強調安全性修正並不會大幅影響處理器的性能，然而微軟的測試顯示了在安裝漏洞安全性修正的Windows 7與Windows 8環境下，2015年（含）以前生產的Intel處理器會有性能下降，在某些測試下降幅甚至達到30%。性能下降在較舊的微架構如Haswell上尤其明顯，在使用較新的微架構如Skylake、Kaby Lake的Windows 10系統上，降幅則較微小。 對於Intel的處置方式，Linux之父林纳斯·托瓦兹強烈表達了他的不滿，稱Intel的修正方案是「全然的垃圾」並說Intel正在做瘋狂的、毫無道理的事情。以下節錄他在一則郵件中對於Intel修補方式的回應。 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? 全国信息安全标准化技术委员会秘书处. 关于发布《网络安全实践指南—CPU熔断和幽灵漏洞防范指引》的通知. 全国信息安全标准化技术委员会. 2018-01-16 [2019-01-12]. （原始内容存档于2019-01-12） （中文（中国大陆））.  高源樺. 英特爾推更新修復晶片安全隱患　或致運算速度減慢. 香港01. 2018-01-06 [2018-01-07]. （原始内容存档于2020-08-08） （中文（香港））.  英特尔芯片存漏洞？苹果微软纷纷中招紧急打补丁-寰球立方体-新华网. [2018-01-07]. （原始内容存档于2020-08-10）.  CVE-2017-5754. [2017-02-01]. （原始内容存档于2022-08-07）.  CVE-2017-5754. [2018-01-01]. （原始内容存档于2022-08-07）.  About speculative execution vulnerabilities in ARM-based and Intel CPUs. [2018-04-26]. （原始内容存档于2021-03-27）.  Arm Ltd. Arm Processor Security Update. ARM Developer. [2018-04-08]. （原始内容存档于2018-04-04）.  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）.  CERT: "Meltdown and Spectre" CPU Security Flaw Can Only Be Fixed by Hardware Replacement – WinBuzzer. January 4, 2018 [2018-04-26]. （原始内容存档于2021-05-08）.  ‘It Can’t Be True.’ Inside the Semiconductor Industry’s Meltdown. [2018-01-10]. （原始内容存档于2022-08-07）.  Schneier, Bruce. Spectre and Meltdown Attacks Against Microprocessors - Schneier on Security. www.schneier.com. [January 9, 2018]. （原始内容存档于2021-04-12）.  This Week in Security: Internet Meltdown Over Spectre of CPU Bug. Cylance.com. 2018-01-05 [2018-01-30]. （原始内容存档于2018-01-09）.  Meltdown, Spectre: here's what you should know. Rudebaguette.com. 2018-01-08 [2018-01-30]. （原始内容存档于2018-07-05）.  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） （英语）.  CVE-2017-5754. security-tracker.debian.org. [January 16, 2018]. （原始内容存档于2021-04-12）.  Apple Confirms 'Meltdown' and 'Spectre' Vulnerabilities Impact All Macs and iOS Devices, Some Fixes Already Released. [2018-04-26]. （原始内容存档于2020-12-05）.  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）.  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）.  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）.  Smith, Ryan. Intel Publishes Spectre & Meltdown Hardware Plans: Fixed Gear Later This Year. AnandTech. March 15, 2018 [March 20, 2018]. （原始内容存档于2018-05-04）.  Coldewey, Devin. Intel announces hardware fixes for Spectre and Meltdown on upcoming chips. TechCrunch. March 15, 2018 [March 28, 2018]. （原始内容存档于2018-04-12）.  Ben Thomposn：「幽靈」與「熔毀」漏洞映射出了科技行業的現狀. 香港矽谷. 2018-01-10 [2018-05-28] （中文（香港））.  开年惊吓！Intel承认CPU安全漏洞存在，厂商们一夜回到20年前. 2018-01-08 [2018-05-28]. （原始内容存档于2020-02-01）.  处理器A级漏洞Meltdown（熔毁）和Spectre（幽灵）分析报告. [2018-05-28]. （原始内容存档于2020-08-09）.  Meltdown and Spectre. Spectreattack.com. [2018-01-30]. （原始内容存档于2018-01-03）.  存档副本. [2018-05-28]. （原始内容存档于2021-01-16）.  A Critical Intel Flaw Breaks Basic Security for Most Computers. Wired. January 3, 2018 [2018-04-08]. （原始内容存档于2018-01-03）.  Arm Processor Security Update. ARM Developer. ARM Ltd. January 3, 2018 [January 5, 2018]. （原始内容存档于2018-04-04）.  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）.  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）.  Intel's processors have a security bug and the fix could slow down PCs. The Verge. [January 3, 2018]. （原始内容存档于2018-01-03）.  Linux Gaming Performance Doesn't Appear Affected By The x86 PTI Work – Phoronix. www.phoronix.com. [January 3, 2018]. （原始内容存档于2021-02-20）.  Lendacky, Tom. [tip:x86/pti] x86/cpu, x86/pti: Do not enable PTI on AMD processors. lkml.org. [January 3, 2018]. （原始内容存档于2020-08-03）.  Patches arrive for Intel's 'Meltdown' flaw — here's how to protect your device. January 4, 2018 [2018-04-08]. （原始内容存档于2018-01-09）.  An Update on AMD Processor Security. [2018-04-08]. （原始内容存档于2018-03-17）.  Who's affected by computer chip security flaw. （原始内容存档于2018-01-04）.  Kernel-memory-leaking Intel processor design flaw forces Linux, Windows redesign. [2018-04-08]. （原始内容存档于2018-04-07）.  Staff. Meltdown and Spectre-faq-systems-spectre. Graz University of Technology. 2018 [January 3, 2018]. （原始内容存档于2018-01-03）.  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）.  Google: Almost All CPUs Since 1995 Vulnerable To "Meltdown" And "Spectre" Flaws. [2018-04-08]. （原始内容存档于2021-04-20）.  P6 family microarchitecture. www.jaist.ac.jp. [2018-04-08]. （原始内容存档于2020-01-03）.  Understanding Those Alarming Computer Chip Security Holes: 'Meltdown' and 'Spectre'. [2018-04-08]. （原始内容存档于2021-03-08）.  'Spectre' and 'Meltdown': New CPU vulnerabilities affect most smartphones and computers. January 4, 2018 [2018-04-08]. （原始内容存档于2020-09-27）.  Why Raspberry Pi isn't vulnerable to Spectre or Meltdown. Raspberry Pi. 2018-01-05 [2018-01-30]. （原始内容存档于2021-04-09）.  Tung, Liam. Meltdown-Spectre: IBM preps firmware and OS fixes for vulnerable Power CPUs. ZDNet. 2018-01-10 [2018-01-30]. （原始内容存档于2020-08-03）.  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） （美国英语）.  Intel 64 處理器硬體全部中招，軟體修復漏洞最高導致 30％ 效能下滑 | T客邦. PCADV 電腦王 - 狂操、硬幹、玩真的. 2018-01-04 [2020-02-02]. （原始内容存档于2020-12-01） （中文（臺灣））.  Williams, Chris. Kernel-memory-leaking Intel processor design flaw forces Linux, Windows redesign. www.theregister.co.uk. [2020-02-02]. （原始内容存档于2018-04-07） （英语）.  安全漏洞作祟、微軟：更新會拖慢電腦. [2018-01-10]. （原始内容存档于2018-01-10）.  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）.  Linus Torvalds declares Intel fix for Meltdown/Spectre ‘COMPLETE AND UTTER GARBAGE’. TechCrunch. [2020-02-02] （美国英语）. [失效連結] Ranger, Steve. Spectre and Meltdown: Linux creator Linus Torvalds criticises Intel's 'garbage' patches. ZDNet. [2020-02-02]. （原始内容存档于2020-12-25） （英语）.  Patrizio, Andy. Linus Torvalds blasts Intel’s Meltdown fixes as ‘garbage’. Network World. 2018-01-24 [2020-02-02]. （原始内容存档于2020-09-24） （英语）.  Meltdown和Spectre漏洞的官方网站 （页面存档备份，存于互联网档案馆）（英文） Meltdown论文 （页面存档备份，存于互联网档案馆）（英文） Google Project Zero write-up （页面存档备份，存于互联网档案馆） 网络安全实践指南—CPU熔断和幽灵漏洞防范指引 （页面存档备份，存于互联网档案馆）（简体中文） 幽灵 (安全漏洞)（Spectre） 内核页表隔离 Row hammer（英语：Row hammer） 奔腾浮点除法错误