熔燬 (安全漏洞)

熔燬，也譯崩潰，編號CVE-，正式名稱為「--」，常譯作「惡意資料快取載入」，是一個存在於英特爾大部分x86/x86-64微處理器、部分IBM POWER架構處理器以及部分ARM架構處理器中的關於推測執行機制的硬體設計缺陷及安全漏洞。該缺陷使得低許可權的程序無論是否取得特權，均可以獲取受高許可權保護的記憶體空間中的資料，漏洞利用是基於時間的旁路攻擊。2018年1月，該缺陷隨另一個基於推測執行機制的重量級資訊安全漏洞、硬體缺陷「Spectre」在通用漏洞披露中公佈。由於英特爾處理器及IBM POWER處理器均在市場上佔據極大的份額是重新設計處理器的微架構，為此英特爾、IBM及ARM都將新處理器微架構的推出時程大幅押後。概述.熔毀缺陷是基於設計不良的數位電路設計中出現的競爭條件，再結合許多現代微處理器的非依序執行及推測執行特性而產生。在具備非依序執行及推測執行特性的處理器上，處理器會檢測指令的相依性，對無相依性的指令會進行預先執行，或者當處理器執行某一指令出現異常而面臨停頓時，處理器會先執行與異常指令無相依性的指令以跳過停頓，這兩類指令執行方式的執行結果都會儲存到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的處理器不受缺陷影響，是因為我們的分頁架構有特權級保護」。同時期的另一個硬體缺陷——幽靈，受影響的處理器產品遍及當今所有採用分支預測技術的處理器更為具體的，有缺陷的CPU型號數量非常多，Google的Project Zero報告指出，除了安騰以及2013年前的Atom系列，英特爾自1995年發表基於P6微架構的Pentium Pro開始所有具備非依序執行的CPU產品都有熔燬缺陷，P6微架構是英特爾首款具備預測執行的x86微架構，首發產品便是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架構的產品，並發表了適用於這些指令集架構編譯版本的RHEL之修復程式；IBM也立即公佈了受影響型號清單並釋出了相關的韌體修復程式和AIX、z/OS修復程式。甲骨文公司表示SPARC V9的系統沒有熔燬缺陷，但並未說明更老的、不再進行技術支援的處理器產品是否受這兩大硬體缺陷的衝擊。漏洞修復.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 kernelentry/exit points. That's insane. That says "we're trying to protectthe kernel". We already have retpoline there, with less overhead.So somebody isn't telling the truth here. Somebody is pushing completegarbage for unclear reasons. Sorry for having to point that out.If this was about flushing the BTB at actual context switches betweendifferent users, I'd believe you. But that's not at all what thepatches do.As it is, the patches are COMPLETE AND UTTER GARBAGE.They do literally insane things. They do things that do not makesense. That makes all your arguments questionable and suspicious. Thepatches do things that are not sane.WHAT THE F*CK IS GOING ON?