本文是“Meltdown和Spectre是什么及如何應對”的后續報道,將深入介紹:這兩個漏洞的特點和潛在攻擊,為什么在云服務提供商已經應用補丁的情況下還是要為云虛擬機打補丁,對性能及真實世界應用程序到底有什么影響,威脅建模的必要性,防病毒軟件的作用,硬件如何受到影響以及長遠看可能會帶來什么變化。
Spectre和Meltdown是典型的旁路攻擊,Zero項目的博客上提供了詳盡但復雜的說明。Raspberry Pi創始人Eben Upton在博文中進行了簡單明了的解釋,說明為什么Pi不會受到影響,“我們在那種抽象環境里進行安全推斷時會遇到抽象與現實之間存在輕微差別的情況,Meltdown和Spectre就是這樣的例子”。Graham Sutherland在推特上說明了問題的本質:
副效應回滾有兩個重要的例外:緩存和分支預測歷史。這些通常都是無法回滾的,因為預測執行是一個性能特性,回滾緩存和BHB內容通常會損害性能。
這也就說明了為什么采用各種補丁處理這些問題會影響性能,因為它們的本質是確保緩存和分支預測歷史在可能出現旁路攻擊的地方可以回滾。Joe Fitz將其比作圖書館里的圖書,提供了一個完全非技術的解釋。
Daniel Miessler在文章“Meltdown和Spectre差異簡介”中提供了一個有用的圖表:
在名稱選擇上,針對Spectre線索的補丁更細致多元。Meltdown的處理相對簡單(即使會有性能影響),而Spectre是可能會在某個時候困擾我們的一類問題(可能發現更多)。
Google、AWS和Azure都已經發表了聲明,“我們的云(基本上)已經打好了補丁,現在輪到你們為虛擬機操作系統打補丁了”。遺憾的是,對于為什么要同時對虛擬機管理程序和虛擬機操作系統打補丁,他們沒有提供多少細節。安全研究人員Katie Moussouris援引了Robert O'Callahan博文中的一段話:“對于CPU供應商和云供應商而言,重要的是準確地說明他們采取了什么防范措施,什么攻擊他們無法防范以及他們期望下游客戶負責解決哪些問題”。AWS在聲明中明確表示,“我們會保障客戶的實例不會受到來自其他實例的威脅”。這意味著,VM操作系統仍然需要打補丁來防止App之間的攻擊或者對特定VM內核的攻擊,來自Amazon的Richard Harvey對此進行了確認。
當應用程序進行系統調用讓OS內核幫它們做某事時,這些問題補丁的性能影響就會顯現出來。為此,Loopback測試可以呈現最壞的情況。Intel匯總了來自Apple、Microsoft、Amazon和Google的公告,他們普遍對這些補丁的影響輕描淡寫。Cloudflare的CTO John Graham-Cumming表示,“我們會繼續測試#meltdown和#spectre的各種補丁,但對@Cloudflare基礎設施的影響似乎可以忽略”。同時,Aeron創建者Martin Thompson指出,“在Windows上打好Intel的漏洞補丁后,Aeron的良好表現讓人意外。系統調用開銷增加似乎會導致Aeron批處理增加,進而提高了吞吐量。”,雖然這種情況會影響延時。然而,有人報告了更為嚴重的性能影響。Syslog_NG布道師Peter Czanik發現,在Fedora上,編譯時間從4分鐘漲到了21分鐘(雖然還不如在OpenSUSE上糟糕)。工程部門主管Ian Chan表示,“在我們生產環境的部分Kafka代理[d2.xlarge]上,其底層的AWS EC2虛擬機管理程序(大概)已經應用了#Meltdown補丁。CPU增長在5%到25%之間。”
來自微軟的Jess Frazelle表達了對于威脅建模的一個重要觀點,“在以為天要塌下來之前先考慮一下威脅建模。這些Bug需要訪問機器。想一下,如果你運行著自己無法控制的代碼……總而言之,那是你要關心的”。即使這些Bug沒有直接提供權限提升(如果可以找到root密碼,那可能就不嚴重)的方法,Spectre或Meltdown也可能被以其他的方式利用,而大多數服務器系統已經受到了影響。終端用戶設備風險更大,因為幾乎無處不在的Web瀏覽器、廣告中的JavaScript等提供了一個攻擊路徑,這就是為什么除了升級虛擬機管理程序和操作系統外還要升級瀏覽器。
防病毒(AV)軟件也有自己的工作要做。目前,微軟正在進行檢查,確保AV供應商設置了注冊表項,指明應用補丁是安全的,否則,AV可能會試圖訪問與補丁沖突的內存,導致Windows崩潰。一段時間以后,主機入侵防護系統(HIPS)(與AV有大量重疊)可能就可以發現利用Spectre的嘗試。
Intel已經向OEM廠商提供了固件升級包,包括CPU微指令修復,不過顯然,軟件補丁的推出說明這些升級包本身并不夠。那些升級包傳播到終端用戶還需要時間,而微軟通過升級他們的Surface硬件做了早期示范。AMD的公告對其CPU漏洞進行了低調處理,并指出這些升級包的性能影響幾乎可以忽略。ARM提供了一個受影響的架構列表,其白皮書得到了廣泛的補充,簡明詳盡,其中多半是與廠商無關的問題解釋及補救措施。奇怪的是,用在iPhone和iPad中的基于ARM的Apple A系列CPU也受到了Meltdown的影響,說明他們借用了x86處理預測執行的方法。ARM還介紹了可以針對他們的部分核心設計發起的“Variant 3a” Meltdown攻擊,并提供了驗證性攻擊代碼。白皮書中描述的可以緩解攻擊的CSDB barrier操作已經在ARM CPU中提供,這說明已經可以防范可能出現的此類攻擊,但是只有真正出現了攻擊,才能知道這一措施的開銷。
長遠來看,有兩個關鍵點。第一,Spectre的風險可能還會存在一段時間——至少要等到現有的硬件被替換掉,對于嵌入式系統而言可能還要數十年。修復下一代CPU可能也為時已晚,至少會嚴重推遲他們的發布周期。這一系列的事件凸顯出CPU保護環其實只是另一種抽象——是油漆線,是吹哨子的裁判,而不是水泥墻。也許,解決這些問題的CPU不得不設計“硬墻(hard wall)”來達到防護目的。正如Joe Fitz所言,“我們可能需要從頭再來了”。
查看英文原文:A Deeper Dive into Spectre and Meltdown