當前位置:
首頁 > 科技 > 正如預測的那樣,更多的分支預測處理器攻擊被發現

正如預測的那樣,更多的分支預測處理器攻擊被發現

從威廉和瑪麗學院的研究人員,卡內基梅隆大學,加州大學河濱分校,賓厄姆頓大學所描述的安全攻擊,利用現代處理器的投機執行特性泄漏敏感信息,破壞操作系統和軟體的安全邊界建立保護重要的數據。

這可能聽起來很熟悉。

今年早些時候發布的「幽靈攻擊」利用了現代處理器的投機性執行特性來泄露敏感信息。新的攻擊,被研究人員命名為BranchScope,與幽靈攻擊的變體2有相似之處,因為BranchScope和幽靈2都利用了處理器分支預測器的行為。

在推測執行的情況下,處理器在程序實際所在的位置運行,並且它嘗試執行指令,然後才能確定這些指令是否實際運行。例如,如果一個程序測試兩個數字是否相等,如果它們是相同的,如果它們不是,那麼處理器將猜測結果並推測執行結果操作。如果事後證明處理器猜錯了,推測的結果就會被丟棄,至少從抽象的意義上來說,這就像是從未發生過的錯誤猜測。處理器從它停止的地方開始,執行它應該採取的動作。

「幽靈」的攻擊是一個整體,因為處理器並沒有完全按照他們應該的方式把東西放回原處。雖然處理器確實恢復了它的推測執行,但如果沒有,程序就會簡單地停止工作——它並不是那麼完美。當涉及到處理器的緩存時,這一點尤其明顯:推測執行可能導致處理器將數據載入到緩存中(或者,或者,從緩存中清除數據),並且這些緩存更改仍然存在,即使進行了錯誤的猜測。仔細編寫的軟體可以檢測這些緩存變化,並利用它們來推斷秘密信息。

該處理器的分支預測器是其核心的推理執行機構之一。雖然最新處理器中的分支預測器很複雜,但在廣義上它們的操作方式類似。處理器會跟蹤分支指令的地址,不管分支是否被取走,如果分支被取走,下一條指令的地址應該是該分支的目標。分支預測器提供了兩個相關的預測:分支是否被捕獲,如果被捕獲,目標是什麼。

BranchScope和幽靈2都利用了分支預測器的不同部分。幽靈2依賴於一個稱為分支目標緩衝區(BTB)的部分——處理器中記錄分支目標的數據結構。相反,BranchScope使用預測的方向來泄漏信息——不管它是否可能被取走——它存儲在模式歷史表中(PHT)。

PHT保持了最近的一種跑步成績來記住這些分支是否被取走。通常情況下,它是一個兩比特的計數器,有四個狀態:強取,弱取,弱取,強不取。每當一個分支被取走,計數器的值就被移動到「強取」;每次它沒有被拿走,它就被移動到「強烈不被拿走」。這個設計意味著偶爾的錯誤預測不會改變預測的結果:幾乎總是被採用的分支仍然會被預測,即使它偶爾不被使用。改變預測需要兩個背靠背的錯誤判斷。這個設計被證明比一個單位計數器提供了更好的結果,它僅僅根據上次發生的情況預測一個分支。

對於幽靈2,攻擊者啟動BTB,仔細執行分支指令,使BTB具有可預測的內容,並使用目標指令,如果推測執行,將以可檢測的方式干擾處理器的緩存。受害者程序然後運行並創建一個分支。然後攻擊者檢查緩存是否受到干擾;干擾信息的測量。

在新的攻擊中,攻擊者啟動PHT並運行分支指令,這樣PHT就會始終假設一個特定的分支被佔用或不被佔用。然後,受害者代碼運行並創建一個分支,這可能會干擾PHT。然後攻擊者會運行更多的分支指令來檢測對PHT的干擾;攻擊者知道應該在特定的方向和測試中預測一些分支,看看受害者的代碼是否改變了這個預測。

研究人員只查看了英特爾處理器,利用英特爾的SGX(軟體保護擴展)來保護信息,這是一種在某些晶元上發現的特徵,可以劃分出一小段加密的代碼和數據,即使是操作系統(或虛擬化軟體)也無法訪問它。他們還描述了攻擊可以用來對付地址空間布局的隨機化,以及在加密和圖像庫中推斷數據的方法。

幽靈2已經引起了操作系統和硬體的改變,並計划了更多的硬體修復。研究人員建議,對於分支機構來說,需要類似的解決方案組合;一些軟體可以被修改以消除分支,而硬體可以被修改以在處理器上劃分推測的執行數據結構,這樣一個進程就不能攻擊另一個進程。

與幽靈2一樣,目前還不清楚究竟有多少軟體真正容易受到分支攻擊的攻擊。在這兩種情況下,攻擊者都需要能夠在受害者系統上運行代碼,因此這些攻擊永遠不會被用於初始進入系統。然而,他們所做的是要證明,長期以來假定存在的隔離邊界在某種程度上是由對高性能處理器至關重要的投機性執行硬體所滲透的。此外,BranchScope表明,幽靈黨並不是唯一可以利用這種投機行為的途徑。

從根本上說,處理器包含大量的內部狀態(包括寄存器、緩存、分支預測器、存儲緩衝區,以及更多),推測執行可以修改。架構狀態——由處理器發布的、文檔化的指令直接公開和操作的部分——被投機性的硬體妥善保存。像「幽靈」和「BranchScope」這樣的攻擊之所以存在,是因為非體系結構的狀態——代表可能由家庭轉移到家庭的處理器的實現細節的部分,以及不能直接訪問程序的部分——並沒有得到充分的保護。推測執行(以及它所依賴的非體系結構狀態)的設計是不可見的,沒有顯示正在運行的程序。

結果就是像「幽靈2」和「BranchScope」這樣的攻擊。研究人員可能需要數年時間才能確定各種各樣的方法,在這些方法中,推測性的執行硬體可以通過這種方式泄露信息,而且在強大的、普遍的防禦系統能夠阻止攻擊之前,它還會更長的時間。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 夜行的貓 的精彩文章:

如何將您的Android設備變成「微軟手機」
每個人都可以免費從Windows 10 S切換到普通Windows

TAG:夜行的貓 |