谷歌研究者:軟件技術無法解決“幽靈”芯片漏洞
據美國科技媒體Ars Technica報導,谷歌研究人員對“幽靈”(Spectre)攻擊的範圍和影響進行調查後,發表了一篇論文,認為類似於這樣的漏洞可能會繼續困擾處理器,而基於軟件的防護技術會產生較高的性能成本。他們還認為,無論如何,軟件都不足以防禦這種攻擊——一些“幽靈”漏洞似乎並沒有有效的軟件防禦措施。因此,“幽靈”將成為未來的一個重要安全隱患,並沒有直接的解決方案。
“崩潰”(Meltdown)和“幽靈”攻擊的發現無疑是2018年的重大安全事件。去年1月首次發現後,全年又出現了新的變種。這兩種攻擊都依靠處理器的理論架構行為與真實的事實行為之間的差異來發動。
論文全文:
https://arxiv.org/pdf/1902.05178.pdf
具體而言,所有的現代處理器都會進行推測執行,例如,它們會假設某個值從內存中讀取,或者某個if條件是真是假,使之可以根據這些假設提前執行任務。如果假設正確,推測結果就會保留;如果假設錯誤,推測結果就會放棄,處理器則會重新計算。推測執行並不是處理器的架構特徵,而是執行特徵,因此應該在完全不可見的情況下執行程序。當處理器放棄錯誤的推測時,看起來就像這個推測從未發生過一樣。
但“崩潰”和“幽靈”漏洞的研究人員發現,推測執行並非完全不可見。當處理器放棄推測結果時,錯誤推測會留下一些痕跡。例如,推測可能會改變處理器緩存中的數據。程序可以通過測量從內存中讀取數值的時間來探測這些變化。
通過仔細構建,攻擊者便可讓處理器根據一些興趣值進行推測,並使用緩存變化來揭露出推測值的實際情況。這就會對網絡瀏覽器等應用構成威脅:可以利用惡意JavaScript來了解正在運行的進程的內存佈局,然後使用這些信息來利用其他安全漏洞執行任意代碼。
網絡者認為他們可以在瀏覽器處理過程中構建安全沙盒,這樣一來,腳本就無法了解其包含進程的內存佈局。從架構角度來講,這種假設似乎完全合理。但由於存在“幽靈”攻擊,導致這些假設無法成立。
英特爾、蘋果和其他採用ARM架構的芯片所面臨的“崩潰”漏洞則是這種方式的一個可怕變體。它能讓惡意程序從操作系統內核中提取數據。在發現這種漏洞後,操作系統已經進行了一些調整,將多數數據隱藏,使之無法被這種惡意程序發現。英特爾也對其處理器進行了專門的調整來解決“崩潰”問題,所以該公司最近的處理器已經不再需要激活這些變化。
“幽靈”更加難以應對。已經出現了很多軟件技術阻止處理器通過推測方式執行敏感代碼,或者限制信息通過推測執行方式洩露出去。
谷歌研究人員發現,這些軟件措施有很多不完善的地方,例如在從內存加載許多值之後便會屏蔽所有的推測,雖然可以屏蔽很多攻擊,但實際使用中卻效果不佳。研究人員還嘗試修改Chrome V8 JavaScript引擎,但卻會導致性能下降三分之一或五分之一。其他措施也會遭遇類似的問題。
但所有措施都存在一個問題:沒有一種方式能夠屏蔽所有的“幽靈”變種,因此需要將許多技術結合起來。而由於這些技術不能任意結合,所以單純是找到合適的技術組合也是一個巨大的挑戰。另外,谷歌還設計了一個通用目的“幽靈”家族攻擊,無法用目前的任何技術實現防禦。
“幽靈”攻擊的一項重要因素是衡量緩存變化的時間系統。有一種想法認為,可以讓應用使用的時鐘不那麼精確。這種理論認為,如果需要以幾納秒的長度來衡量緩存差異,那麼以毫秒為精度單位可能就會太過粗糙,無法發動攻擊。但研究人員卻設計了一種技術來放大這種時間差異,而這種放大效果可以戰勝這種讓時間系統變得粗糙的防禦方式。
正因如此,該公司認為不可能完全依靠軟件技術來防禦“幽靈”攻擊。硬件調整或許可以實現這種效果,但這目前仍未得到證實。