包括 AMD、ARM 及 Intel
Google 今天發佈了關於近日出現「安全漏洞」的博文,分析了更多關於是次處理器漏洞的資料及影響,Google 指出在去年旗下的 Project Zero 團隊發現了由「推測執行」(speculative execution)引起的嚴重安全漏洞,「推測執行」是大多數現代處理器用來優化性能的技術。
「推測執行」 Speculative Execution 是指在分佈式集群環境下,程式可能會出現 BUG、負載不均衡或者資源分佈不均等原因,造成同一個 job 的多個task運行速度不一致,有的 task 運行速度明顯慢於其他 task,「推測執行」優化機制採用了典型的以空間換時間的優化策略,它同時啟動多個相同 task 備份任務處理相同的數據塊,在需要時就能使用以改善效能並預防延遲,被應用在現代大多數的處理器中。
Project Zero 的研究人員 Jann Horn 表明,黑客可以利用「推測執行」來讀取應該無法訪問的系統記憶體。例如,未經授權方可能會讀取系統記憶體中的訊息,例如密碼、加密密鑰或應用程式中的機密資料。測試還表明,在一台 VM 虛擬機上運行的攻擊能夠訪問主機的物理記憶體,並通過這種方式獲得同一主機上不同 VM 虛擬機記憶體的讀取權限。這些漏洞會影響許多 CPU,包括來自 AMD、ARM 及 Intel 的 CPU,以及影響採用這些處理器的裝置與作業系統。
要利用此漏洞,攻擊者首先必須能夠在目標系統上運行惡意代碼。Project Zero 的研究人員發現了三種在不同條件下有效的攻擊方法(變種),分別為:一、繞過邊界檢查(bounds check bypass);二、分支目標注入(branch target injection);三、惡意資料快取載入(rogue data cache load),這三種攻擊方式都可以允許具有正常用戶權限的進程執行未經授權的記憶體數據讀取。
為了提高性能,處理器都會基於可能是真的假設來執行推測指令,並在推測執行中驗證這些假設,若是有效的便繼續執行,無效時即會鬆開執行,並因應真實的情況啟動正確的執行路徑;不過,「推測執行」在 CPU 處於鬆開狀態時可能會出現一些無法復原的副作用,進而導致資料外洩。
Google 表示,該漏洞已在 2017 年 6 月 1 日向 Intel、AMD、ARM 回報,但直到現在才被公開披露。