惡意數據快取載入

熔毀(英語:Meltdown),也譯熔斷崩潰CVE-2017-5754,正式名稱為“Rogue Data Cache Load”,常譯作“惡意數據快取載入”是一個存在於英特爾大部分的x86/x86-64微處理器、部分IBM POWER架構處理器以及部分ARM架構處理器中關於推測運行機制的硬體設計缺陷及安全漏洞,這種缺陷使得低許可權的進程無論是否獲取特權均可以獲取具備高許可權保護的記憶體空間的數據,漏洞利用是基於時間的旁路攻擊

基本介紹

  • 中文名:惡意數據快取載入
  • 外文名:Meltdown
  • 別稱:熔斷、崩潰
概述,受影響硬體,漏洞修復,參見,

概述

熔毀缺陷是基於設計不良的數字電路設計中出現的競爭條件,再結合許多現代微處理器的非依序運行及推測運行特性而產生。
在具備非依序運行及推測運行特性的處理器上,處理器會檢測指令的相依性,對無相依性的指令會進行預先運行,或者當處理器運行某一指令出現異常而面臨停頓時,處理器會先運行與異常指令無相依性的指令以跳過停頓,這兩類指令運行方式的運行結果都會保存到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-A8Cortex-A9Cortex-A15、Cortex-A17、Cortex-A57、Cortex-A72及Cortex-A73IP核只受幽靈的影響。ARM是在英特爾之後第二個被發現有熔毀缺陷的產品的,但與英特爾的不同,ARM唯一有熔毀缺陷的IP核產品Cortex-A75尚未有實現商用。另外,不使用預測運行技術的ARM架構處理器,也是當前使用數量最多的ARM產品,不受任何影響,也沒有熔毀缺陷,這部分包括了大量使用在Android移動設備上的Cortex-A53IP核,以及即將有商用實現案的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修復程式。
甲骨文公司表示SPARCV9的系統(T5、M5、M6、S7、M7、M8、M10、M12處理器)沒有熔毀缺陷,但並未說明更老的、不再進行技術支持的處理器產品是否受這兩大硬體缺陷的衝擊。

漏洞修復

2018年初,微軟發布了新的Windows系統的安全補丁以修復漏洞。英特爾公司多次表示修復漏洞並不會過多影響晶片性能,但微軟的測試表明在安裝了漏洞補丁的Windows 7Windows 8環境下,2015年及以前生產的英特爾晶片會有明顯可感的性能下降,有訊息說下降幅度甚至可以達到30%,較舊的Haswell架構與之前的晶片性能下降尤為明顯。但在使用SkylakeKaby Lake等較新架構的英特爾晶片的Windows 10系統上,性能下降則並不明顯。

參見

相關詞條

熱門詞條

聯絡我們