缺陷被徹底揭露三個月後崩潰與幽靈,我們似乎終於看到了隧道的盡頭。幾天前,微軟宣布硬體補丁分發直接從 Microsoft 更新目錄取得 Spectre,無論 PC 型號為何,只要配備 Intel 處理器即可。大大鬆了口氣。用戶將不再迷失在製造商支援頁面的迷宮中,這是造成混亂的主要根源。
但事態真的解決了嗎?無論如何,Meltdown 頁面已經徹底轉變,無論是在 Windows 還是 macOS 或 Linux 上。「 這問題解決了。可以在作業系統層級反擊該攻擊。因此,只要係統是最新的,就不再有任何風險””,法國國家科學研究中心 (CNRS) 研究員、在 IRISA 從事微架構安全研究的 Clémentine Maurice 解釋道。
預測執行,處理器的致命弱點
在 Spectre 方面,情況就沒那麼簡單了,因為問題深深存在於處理器的功能中,處於預測執行的層面。當程式運行並根據邏輯條件整合執行循環或執行緒時,當前的處理器不會等待它真正執行:它們會預測其結果並執行在它們看來最有可能的指令,這節省了時間很多時間。
但幽靈攻擊表明,影響這種預期機制是可能的。攻擊者可以欺騙處理器執行不應執行的分支。然後,它可以透過輔助通道間接猜測某些訊息,特別是透過測量記憶體存取時間。幽靈攻擊有兩種變體,邊界檢查繞過(CVE-2017-5753) 和分支目標注入(CVE-2017-5715),取決於目標執行緒類型。以下是去年一月提供的兩個程式碼範例格拉茨技術大學的研究人員,他們是發現 Meltdown 和 Spectre 的團隊之一。
完全消除這種預期機制是不可能的。“那麼性能將會災難性地下降””,克萊門汀·莫里斯強調。例如,開發人員創建了一個遊戲《毀滅戰士》的版本沒有任何預測執行。我們最終不是每秒 30 幀,而是每七小時一幀。因此,我們必須找到一種更微妙的方法。
迄今為止已經提出了幾種解決方案。在軟體方面,可以在程式碼中放置某種障礙,從而在某些關鍵時刻阻止預測。在某些情況下,可以使用簡單指令(“LFENCE”)。在其他情況下,我們可以添加“retpolines”,這是 Google 創建的一種有點奇怪的結構,它通過用無限循環捕獲分支預測來中和分支預測。
這些障礙透過程式碼編譯器集成,有時甚至可以自動放置它們。「問題在於編譯器必須確切地知道要把它們放在哪裡,這並不容易。實施的規則不好,可以規避 »格拉茨技術大學的博士生邁克爾·施瓦茨 (Michael Schwarz) 解釋道,他是揭示 Meltdown 和 Spectre 的研究團隊之一的成員。開發人員還可以手動添加這些障礙,但這假設他完全了解 Spectre 缺陷對其程式碼的影響。這並不是很明顯。
英特爾微碼還有很長的時間才能到達
就英特爾而言,幾個月來一直致力於更新處理器微程式碼的補丁。有幾種技術正在發揮作用:間接分支限制推測 (IBRS)、間接分支預測器屏障 (IBPB)、單線程間接分支預測器 (STIBP)。“這個想法是為了確保處理器忘記它所學到的東西並且不再被攻擊者困住”,指定邁克爾·施瓦茨。問題是這些技術僅適用於分支目標注入變體。
此外,僅第六代英特爾處理器的微代碼(Skylake)直到最近才可用。 Haswell 和 Broadwell 世代的微代碼造成故障並在最後一刻被撤回。好消息是英特爾已經取得了良好的進展。英特爾老闆 Brian Krzanich 剛剛宣布,所有最新一代處理器系列(過去 5 年)現在都可以受益於可靠的軟體保護。它還確保硬體級保護將應用於新一代處理器、Meltdown 和 Spectre 變體之一。另一個(邊界檢查繞過)目前必須繼續透過軟體手段來緩解。
其他灰色地帶仍然存在。「所有軟體修補程式都旨在抵禦從用戶空間到核心空間的攻擊。使用者空間之間的攻擊情況尚未解決 »”,邁克爾·施瓦茨繼續說道。對於來自瀏覽器的遠端攻擊也仍然存在疑慮。為了防止攻擊者實作 Spectre 攻擊,發布商降低了 Javascript API 中時間測量函數的精確度。“問題是手工製作時間測量功能並不是很難”,研究人員強調。
現在,我們必須忍受它
簡而言之,儘管已經完成了大量工作,但幽靈暫時只是不完全密封。而這個缺陷的潛力似乎還沒有被充分開發出來。自從它被揭露以來,另外兩個變種也被揭露了,至尊幽靈等新加坡佩克特。邁克爾施瓦茨 (Michael Schwarz) 表示,他們並沒有對迄今為止開發的修復提出質疑,這令人放心。但我們認為這個領域仍然非常不穩定,問題仍然存在。「短期內,我們必須學會忍受這一缺陷,並確保降低遭受攻擊的可能性。不過,我希望處理器領域的研究能持續下去,有一天這個缺陷將會完全消除。,埃斯蒂姆·邁克爾·施瓦茨。
幸運的是,Spectre 攻擊實施起來並不簡單。與 Meltdown 不同,它們依賴電腦的硬體和軟體配置,這排除了任何大規模的利用。只有有才華的駭客才能利用它進行有針對性的攻擊。但我們絕不能認為這是不可能的。“一個計算機科學專業的本科生有能力做到這一點”,蘇琳·邁克爾·施瓦茨。