Loading AI tools
来自维基百科,自由的百科全书
幽靈(英語:Spectre)是一個存在於分支預測實現中的硬件缺陷及安全漏洞,含有預測執行功能的現代微處理器均受其影響[1][2],漏洞利用是基於時間的旁路攻擊,允許惡意行程獲得其他程式在對映主記憶體中的資料內容。[3][4][5]Spectre是一系列的漏洞,基於攻擊行爲類型,賦予了兩個通用漏洞披露ID,分別是CVE-2017-5753(bounds check bypass,邊界檢查繞過)和CVE-2017-5715(branch target injection,分支目標註入),於2018年1月隨同另一個也基於推測執行機制的、屬於重量級資訊保安漏洞的硬件缺陷「Meltdown」(熔燬)一同公佈。由於該缺陷是推測執行機制導致的,加上不同處理器架構對推測執行又有不同的實作方式,因此這個缺陷無法獲得根源上的修復而只能採取「見招拆招」式的方法防範,而且因機制所致,各種解決方案還有不可預料的效能下降。[6]
![]() | 此條目翻譯自其他語言維基百科,需要相關領域的編者協助校對翻譯。 |
CVE-2017-5753依賴於運行中的即時編譯(JIT)系統,用於Javascript的JIT引擎已被發現存在此漏洞。網站可以讀取瀏覽器中儲存的另一個網站的數據,或者瀏覽器本身的記憶體。對此Firefox 57.0.4(部分)及Chrome 64通過為每個網站分配專用的瀏覽器程式來阻擋此類攻擊[7][8];作業系統則是通過改寫的編譯器重新編譯以阻擋利用該漏洞進行攻擊的行爲。
針對CVE-2017-5715,除了軟件層面上進行修改以外,處理器也需要通過微指令更新來阻擋這類攻擊。[9][10][11]
隨着幽靈缺陷衍生的安全漏洞(攻擊手段變體,包括CVE-2018-3693、CVE-2018-3640、CVE-2018-3639等)被逐一發現,英特爾等CPU開發商不得不在修復既有缺陷的同時資助第三方資訊保安團隊繼續發掘潛在的缺陷以破財消災。[12]
Spectre由Google Project Zero的Jann Horn獨立發現,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]潛在漏洞的總和。它們都利用了一種現代微處理器為降低主記憶體潛伏、加快執行速度的常用方法「預測執行」的副作用。具體而言,Spectre着重於分支預測,這是預測執行的一部分。與同時披露的相關漏洞「熔毀」不同,Spectre不依賴單個處理器上記憶體管理及系統保護的特定功能,而是一個更為通用的漏洞。
白皮書的出發點是,對分支預測機制進行邊信道定時攻擊[16],它是現代微處理器亂序執行的一部分。雖然,處理器的文件保證在架構級別,預測錯誤所導致的任何後果都會在得到正確結果之後取消,然而預測執行仍然有可能留下副作用,例如已載入的快取線。這些所謂的非功能性方面隨後便可影響計算環境。如果這種副作用(包括但不限於主記憶體訪問時間)對惡意程式可見,並且能設法與受害行程所儲存的敏感數據產生關係,則這些副作用可能會使敏感數據可被辨識。即使在架構級別,正式的安全設計能正常工作,這種情況仍然會發生;這種情況下,用於代碼執行的、較低階的微架構最佳化仍然有可能泄漏對正常程式正確執行不是非常重要的某些資訊。
Spectre論文展示了完成攻擊的四個基本步驟:
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]
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.