由於預測執行技術已經被廣泛用於各種CPU中,要想解決這個問題的最根本方法是有新的CPU體系架構。目前的補丁技術只能是使用軟體來降低駭客利用預測執行來入侵核心記憶體,主要的補丁是將每個程序的核心地址和使用者地址共享對映表改為核心地址和使用者地址各有自己獨立的對映表PGD(Page Global Directory),這樣一來在使用者空間根本沒有核心空間的對映表,即使漏洞存在,駭客也不會從核心獲得資料。但是這樣的代價就是每次系統呼叫或者中斷髮生時都需要切換對映表,這無疑會影響應用的效能。使用犧牲效能的方式來解決問題,無疑不是一個好的方案。
其實在晶片供應商、OS廠商、應用提供商已經紛紛釋出針對漏洞補丁的今天,如果你打了相應的補丁,安全風險已經得到了較大程度的控制,但不排除仍有變種出現的可能性。事實上在過去兩個月,“下一代Spectre”、“Meltdown-Spectre變種”等字眼就出現了多次。
我們知道,亂序執行(Out-of-order Execution)、推測執行(Speculative Execution)和分支預測(Branch Prediction)三大CPU採用的技術是造成漏洞產生的根本原因。簡單理解,Meltdown破壞了位於使用者應用和作業系統之間的基本隔離,導致程式可能訪問其他程式和作業系統記憶體,從而產生敏感資訊會被竊取的可能性。Spectre則是破壞了不同應用程式之間的隔離, 處理器會推測在未來有用的資料並執行計算,當這些資料被需要時可立即使用。但是處理器沒有很好地將低許可權的應用程式與訪問核心記憶體分開,這意味著攻擊者可以使用惡意應用程式來獲取應該被隔離的私有資料。
當然,現在很多使用者已經打了補丁,安全風險得到了較大程度的控制。不過卻面臨另外一個“風險”,那就是效能下降問題。儘管各大主要晶片和作業系統供應商紛紛釋出修補程式,但應用這些修補程式可能會對系統性能造成重大影響。
修復後的不同型別應用的平均效能損失
從對於業界應用的影響來看,英特爾確認效能損失取決於工作負載。比如常見的OLTP應用,為了提升效率,往往需要將資料快取到記憶體中,所有的OLTP操作都是由核心來完成,如果不使用Meltdown和Spectre的補丁,應用很容易被駭客攻擊;如果使用補丁,根據第三方測試資料,應用效能可能會有8% 到19%的損失。對於一些核心層和使用者層很少通訊的應用來講,效能影響就會小些甚至不受影響。
由於預測執行技術已經被廣泛用於各種CPU中,要想解決這個問題的最根本方法是有新的CPU體系架構。目前的補丁技術只能是使用軟體來降低駭客利用預測執行來入侵核心記憶體,主要的補丁是將每個程序的核心地址和使用者地址共享對映表改為核心地址和使用者地址各有自己獨立的對映表PGD(Page Global Directory),這樣一來在使用者空間根本沒有核心空間的對映表,即使漏洞存在,駭客也不會從核心獲得資料。但是這樣的代價就是每次系統呼叫或者中斷髮生時都需要切換對映表,這無疑會影響應用的效能。使用犧牲效能的方式來解決問題,無疑不是一個好的方案。