幽靈(英語:Spectre)是一個存在於分支預測實現中的硬件缺陷及安全漏洞,含有預測執行功能的現代微處理器均受其影響[1][2]漏洞利用是基於時間的旁路攻擊,允許惡意行程獲得其他程式在對映主記憶體中的資料內容。[3][4][5]Spectre是一系列的漏洞,基於攻擊行爲類型,賦予了兩個通用漏洞披露ID,分別是CVE-2017-5753(bounds check bypass,邊界檢查繞過)和CVE-2017-5715(branch target injection,分支目標註入),於2018年1月隨同另一個也基於推測執行機制的、屬於重量級資訊保安漏洞的硬件缺陷「Meltdown」(熔燬)一同公佈。由於該缺陷是推測執行機制導致的,加上不同處理器架構對推測執行又有不同的實作方式,因此這個缺陷無法獲得根源上的修復而只能採取「見招拆招」式的方法防範,而且因機制所致,各種解決方案還有不可預料的效能下降。[6]

該漏洞的徽標,特徵是手中的樹枝(branch,有分支、分叉之意)

CVE-2017-5753依賴於運行中的即時編譯(JIT)系統,用於Javascript的JIT引擎已被發現存在此漏洞。網站可以讀取瀏覽器中儲存的另一個網站的數據,或者瀏覽器本身的記憶體。對此Firefox 57.0.4(部分)及Chrome 64通過為每個網站分配專用的瀏覽器程式來阻擋此類攻擊[7][8];作業系統則是通過改寫的編譯器重新編譯以阻擋利用該漏洞進行攻擊的行爲。

針對CVE-2017-5715,除了軟件層面上進行修改以外,處理器也需要通過微指令更新來阻擋這類攻擊。[9][10][11]

隨着幽靈缺陷衍生的安全漏洞(攻擊手段變體,包括CVE-2018-3693CVE-2018-3640CVE-2018-3639等)被逐一發現,英特爾等CPU開發商不得不在修復既有缺陷的同時資助第三方資訊保安團隊繼續發掘潛在的缺陷以破財消災。[12]

歷史

編輯

Spectre由Google Project Zero的Jann Horn獨立發現,Paul Kocher英語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]潛在漏洞的總和。它們都利用了一種現代微處理器為降低主記憶體潛伏英語Memory latency、加快執行速度的常用方法「預測執行」的副作用。具體而言,Spectre着重於分支預測,這是預測執行的一部分。與同時披露的相關漏洞「熔毀」不同,Spectre不依賴單個處理器上記憶體管理及系統保護的特定功能,而是一個更為通用的漏洞。

白皮書的出發點是,對分支預測機制進行邊信道定時攻擊[16],它是現代微處理器亂序執行的一部分。雖然,處理器的文件保證在架構級別,預測錯誤所導致的任何後果都會在得到正確結果之後取消,然而預測執行仍然有可能留下副作用,例如已載入的快取線。這些所謂的非功能性方面隨後便可影響計算環境。如果這種副作用(包括但不限於主記憶體訪問時間)對惡意程式可見,並且能設法與受害行程所儲存的敏感數據英語Information sensitivity產生關係,則這些副作用可能會使敏感數據可被辨識。即使在架構級別,正式的安全設計能正常工作,這種情況仍然會發生;這種情況下,用於代碼執行的、較低階的微架構最佳化仍然有可能泄漏對正常程式正確執行不是非常重要的某些資訊。

Spectre論文展示了完成攻擊的四個基本步驟:

  1. 首先,論文闡述了在現代處理器中的,惡意程式可以通過程式內部的執行操縱分支預測邏輯,使得分支預測命中或者失敗的情況可以提前判斷。
  2. 隨後展示了,可以可靠地對快取命中和未命中間的差異進行計時,因此,本來應該是簡單的非功能差異,實際卻可作為秘密信道,從無關資訊中提取行程的內部工作資訊。
  3. 然後,論文以一個簡單的範例程式和一個在瀏覽器沙盒中執行的JavaScript片段為基礎,將結果與返回導向編程攻擊等原理進行綜合;在這兩種情況下,只需簡單使用由普通編譯器或現有瀏覽器中JavaScript引擎生成的代碼,利用其中條件分支的預測執行,受害者行程的整個地址空間(即執行中程式的內容)都將可讀。其基本思想是,在現有的代碼中尋找預測執行可能涉及到不可訪問數據的地方,操縱處理器,使得預測執行必須觸及該數據的實際內容,然後對處理器的副作用計時,這時預取機制已經載入完成了一條快取線,結果就是訪問這條快取線的數據速度會更快。
  4. 最後,本文將這種攻擊一般化到受害行程的任何非功能狀態上。緊接着討論了甚至像匯流排仲裁延遲這樣非常不明顯的非功能性效應。

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]

參考文獻

編輯
  1. ^ Greenberg, Andy. A Critical Intel Flaw Breaks Basic Security for Most Computers. 連線. January 3, 2018 [January 3, 2018]. (原始內容存檔於January 3, 2018). 
  2. ^ Bright, Peter. Meltdown and Spectre: Here's what Intel, Apple, Microsoft, others are doing about it. Ars Technica. 2018-01-05 [2018-01-06]. (原始內容存檔於2018-05-26). 
  3. ^ 3.0 3.1 3.2 Staff. Meltdown and Spectre. Graz University of Technology. 2018 [January 3, 2018]. (原始內容存檔於2018-01-03). 
  4. ^ Metz, Cade; Perlroth, Nicole. Researchers Discover Two Major Flaws in the World’s Computers. 紐約時報. January 3, 2018 [January 3, 2018]. ISSN 0362-4331. (原始內容存檔於January 3, 2018) (美國英語). 
  5. ^ Warren, Tom. Intel’s processors have a security bug and the fix could slow down PCs. The Verge. January 3, 2018 [January 3, 2018]. (原始內容存檔於January 3, 2018). 
  6. ^ Ben Thomposn:「幽靈」與「熔毀」漏洞映射出了科技行業的現狀 (中文(臺灣)). 
  7. ^ 7.0 7.1 7.2 Mozilla Foundation Security Advisory 2018-01. [2018-01-06]. (原始內容存檔於2018-03-14). 
  8. ^ https://www.theregister.co.uk/2018/01/04/intel_amd_arm_cpu_vulnerability/ Meltdown, Spectre: The password theft bugs at the heart of Intel CPUs頁面存檔備份,存於互聯網檔案館), the Register, 2018-01-04.
  9. ^ KB4091663:Intel 微指令更新. 微軟. [2018-06-20]. (原始內容存檔於2018-06-29). 
  10. ^ 推出更新,以啟用防範 Spectre Variant 2 的緩和措施. 微軟. [2018-06-20]. (原始內容存檔於2018-06-28). 
  11. ^ KB4090007:Intel 微指令更新. support.microsoft.com. [2018-06-20]. (原始內容存檔於2018-06-29). 
  12. ^ New Spectre 1.1 and Spectre 1.2 CPU Flaws Disclosed. BleepingComputer. [2018-08-05]. (原始內容存檔於2018-07-16) (美國英語). 
  13. ^ Gibbs, Samuel. Meltdown and Spectre: ‘worst ever’ CPU bugs affect virtually all computers. 衛報. 2018-01-04 [2018-01-06]. (原始內容存檔於2018-01-06). 
  14. ^ 14.0 14.1 Spectre Attacks: Exploiting Speculative Execution (PDF). 2018. (原始內容存檔 (PDF)於January 3, 2018). 
  15. ^ Reading privileged memory with a side-channel. 2018 [2018-01-06]. (原始內容存檔於2018-01-04). 
  16. ^ Mitigations landing for new class of timing attack. 2018 [2018-01-06]. (原始內容存檔於2018-01-04). 
  17. ^ Meltdown (PDF). 2018 [2018-01-06]. (原始內容 (PDF)存檔於2018-01-04). 
  18. ^ Staff. Meltdown and Spectre-faq-systems-spectre. Graz University of Technology. 2018 [January 4, 2018]. (原始內容存檔於2018-01-03) (英語). 
  19. ^ Busvine, Douglas; Nellis, Stephen. Security flaws put virtually all phones, computers at risk. Reuters. Thomson-Reuters. January 3, 2018 [January 3, 2018]. (原始內容存檔於January 3, 2018). 
  20. ^ Staff. Intel Responds To Security Research Findings. Intel. January 3, 2018 [January 4, 2018]. (原始內容存檔於2018-01-03). 
  21. ^ An Update on AMD Processor Security. 超威半導體. 2018 [January 4, 2018]. (原始內容存檔於January 4, 2018). 
  22. ^ Fox-Brewster, Thomas. Massive Intel Vulnerabilities Just Landed -- And Every PC User On The Planet May Need To Update. Forbes. Forbes Media LLC. January 3, 2018 [January 3, 2018]. (原始內容存檔於January 3, 2018). 
  23. ^ 安全漏洞作祟、微軟:更新會拖慢電腦. [2018-01-10]. (原始內容存檔於2018-01-10). 
  24. ^ Metz, Cade; Chen, Brian X. What You Need to Do Because of Flaws in Computer Chips. The New York Times. January 4, 2018 [January 5, 2018]. (原始內容存檔於2018-01-06). 
  25. ^ Pressman, Aaron. Why Your Web Browser May Be Most Vulnerable to Spectre and What to Do About It. Fortune (magazine). January 5, 2018 [January 5, 2018]. (原始內容存檔於2018-01-10). 
  26. ^ Chacos, Brad. How to protect your PC from the major Meltdown and Spectre CPU flaws. PC World. January 4, 2018 [January 4, 2018]. (原始內容存檔於2018-01-04). 
  27. ^ Elliot, Matt. Security - How to protect your PC against the Intel chip flaw - Here are the steps to take to keep your Windows laptop or PC safe from Meltdown and Spectre.. CNET. January 4, 2018 [January 4, 2018]. (原始內容存檔於January 4, 2018). 
  28. ^ Google’s Mitigations Against CPU Speculative Execution Attack Methods. support.google.com. [January 4, 2018]. (原始內容存檔於January 3, 2018) (英語). 
  29. ^ Mitigations landing for new class of timing attack. Mozilla Security Blog. [January 4, 2018]. (原始內容存檔於2018-01-04) (美國英語). 
  30. ^ More details about mitigations for the CPU Speculative Execution issue. [2018-01-06]. (原始內容存檔於2018-01-05). 
  31. ^ Google Says CPU Patches Cause 'Negligible Impact On Performance' With New 'Retpoline' Technique - Slashdot. tech.slashdot.org. [2018-01-06]. (原始內容存檔於2018-04-08). 
  32. ^ Retpoline: a software construct for preventing branch-target-injection - Google Help. support.google.com. (原始內容存檔於January 5, 2018). 
  33. ^ Mcilroy, Ross; Sevcik, Jaroslav; Tebbi, Tobias; Titzer, Ben L.; Verwaest, Toon. Spectre is here to stay: An analysis of side-channels and speculative execution. arXiv:1902.05178 [cs]. 2019-02-13 [2019-02-22]. (原始內容存檔於2019-02-22). 
  34. ^ How Will the Meltdown and Spectre Flaws Affect My PC?. How-To Geek. [2018-01-06]. (原始內容存檔於2018-01-20). 
  35. ^ Meltdown 與 Spectre 的最新修補狀況如何了?如何評量效能降低程度?. TechNews 科技新報. [2018-06-20]. (原始內容存檔於2018-06-20) (中文(臺灣)). 
  36. ^ US, Dell. 微处理器旁路攻击分析漏洞支持. 戴爾. [2018-06-20]. (原始內容存檔於2018-06-20) (中文(中國大陸)). 
  37. ^ microcode revision guidance (PDF). Intel. [2018-06-20]. (原始內容存檔 (PDF)於2018-06-24). 
  38. ^ Intel 處理器微碼更新進度報告:修復至第六代 Core 處理器 Skylake,下一步將延伸至 Sandy Bridge. 2018-02-23 [2018-06-20]. (原始內容存檔於2018-06-20) (中文(臺灣)). 
  39. ^ Intel 停止舊款處理器 Spectre 漏洞安全性更新. TechNews 科技新報. [2020-01-01]. (原始內容存檔於2020-01-01) (中文(臺灣)). 
  40. ^ Intel 處理器微碼更新進度報告:Broadwell 與 Haswell 修正完畢釋出,附贈 UBU 更新微碼教學. 2018-03-01 [2018-06-20]. (原始內容存檔於2018-06-20) (中文(臺灣)). 
  41. ^ Warren, Tom. Intel processors are being redesigned to protect against Spectre - New hardware coming later this year. The Verge. 2018-03-15 [2018-03-15]. (原始內容存檔於2018-04-21). 
  42. ^ 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. 2018-03-15 [2018-03-15]. (原始內容存檔於2018-04-23). 
  43. ^ Coldewey, Devin. Intel announces hardware fixes for Spectre and Meltdown on upcoming chips. TechCrunch. 2018-03-15 [2018-03-28]. (原始內容存檔於2018-04-12). 
  44. ^ 硬體修復最實在!Intel 下半年推出處理器將對 Meltdown 與 Spectre variant 2 免疫. 2018-03-16 [2018-06-20]. (原始內容存檔於2018-06-20) (中文(臺灣)). 
  45. ^ Intel Cascade Lake 和新系列8th Gen Core将在硬件上修复Spectre #2和Meltdown漏洞. [2018-06-20]. (原始內容存檔於2018-06-20). 
  46. ^ 关于Spectre和Meltdown的一则笑话【Intel,AMD & ARM】【2018开年巨献】. [2018-06-20]. (原始內容存檔於2018-06-20). 
  47. ^ AMD 處理器安全性. AMD. [2018-06-20]. (原始內容存檔於2018-06-20) (中文(繁體)). 
  48. ^ 你的電腦對 Meltdown 和 Spectre 免疫嗎?快下載 InSpectre 自我檢測. 2018-01-18 [2018-06-20]. (原始內容存檔於2018-06-20) (中文(臺灣)). 
  49. ^ InSpectre - Spectre/Meltdown脆弱性に対する対応状況を確認できるWindows用ユーティリティ | ソフトアンテナブログ. www.softantenna.com. [2018-06-20]. (原始內容存檔於2018-06-20) (日語). 
  50. ^ GRC InSpectre. www.grc.com. [2018-06-20]. (原始內容存檔於2018-06-20) (英語). 

外部連結

編輯

參見

編輯
  • 熔毀 (安全漏洞) - 英特爾微處理器中的硬件漏洞,允許未經授權的行程訪問特權主記憶體。
  • 行錘擊英語Row hammer - 動態隨機存取記憶體中的意外副作用,導致儲存單元之間發生電氣相互作用。