娟子
近日,美國四所大學的一組學者發現了全新的邊信道攻擊方法,他們能夠利用現代CPU中的推測執行功能來獲取用戶CPU數據,泄漏敏感數據和數據安全邊界。這種邊信道攻擊方法與之前的Meltdown和Specter漏洞利效果相似,但研究人員這次利用的是CPU推測執行功能中的一個新片段。
來自威廉瑪麗學院、卡內基梅隆大學、加州大學河濱分校和賓厄姆頓大學的研究人員將這一新技術命名為BranchScope。這種在攻擊方式上主要針對“分支預測”行為,這個特點與Spectre變體2(CVE-2017-5715)的漏洞利用方法十分相似。但Spectre變體2利用的是分支的目標緩沖區域(Branch Target Buffer),BranchScope利用的是模式歷史表。
BranchScope方法可以讓攻擊者取代CPU進行指令執行的決策。在這種方式之下,攻擊者可以在計算機的特定區域上獲取敏感信息。目前,研究員已經成功在英特爾處理器上通過了漏洞利用復現測試。
學術界表示,BranchScope是第一個針對“分支預測”的邊信道攻擊方法,并且該技術也可用于檢索存儲在SGX的內容(英特爾CPU的安全區域)。攻擊者不需要逆向設計分支預測器操作的細節,只需要從用戶空間的預測執行狀態進行簡單的操作,BranchScope方法也可以擴展到攻擊SGX飛地上。
研究團隊在實例測試中對Intel x86處理器進行了漏洞利用,如Sandy Bridge、Haswell以及Skylake。攻擊者只需要具備用戶權限即可開始執行漏洞利用過程,失敗概率小于1%。
這種全新的攻擊手段目前還沒有應對方案。之前Spectre漏洞補丁無法應對這次的BranchScope攻擊。
但研究團隊表示,針對BranchScope攻擊進行安全補丁的修復應該不是難題———仍然需要從軟件和硬件層面進行雙重的修復工作。
英特爾發言人表示,英特爾正在與這些研究人員合作,目前已經了解到這個漏洞的細節信息了。英特爾預計現有的軟件修復措施,可用于已知的邊信道攻擊,英特爾相信與研究界的密切合作會是保護客戶及其數據的最佳途徑之一。英特爾很感謝研究團隊為之的努力工作。
研究團隊的研究結果“BranchScope:A New Side-Channel Attack on Directional Branch Predictor”會在第23屆ACM國際編程語言和操作系統架構會議(ASPLOS 2018)上公開。
針對這個漏洞,研究者也提出了從軟件或者硬件方面進行的緩解方案:
1.軟件方面緩解
通過算法移除依賴于秘密數據的分支結果,這種技術被稱為if-conversion,是一種編譯器優化技術。它使用條件指令(如cmov)將條件分支轉換為順序代碼,有效地將控制依賴關系轉化為數據依賴關系。通過移除條件分支指令,從而緩解BranchScope攻擊。然而,將這種保護機制應用于大型代碼庫是很困難的,只能局限于使用敏感數據的程序的關鍵部分。
2.硬件防御
通過對分支預測器的結構進行重新設計也可緩解這個攻擊,具體的緩解措施包含:
(1)PHT隨機化
BranchScope需要在PHT(模式歷史表,pattern history table)中創建可預測的沖突(例如,基于虛擬地址)。為了防止這種沖突,可以修改PHT索引函數作為該軟件實體唯一的輸入數據。這可以作為SGX硬件狀態的一部分,也可以是進程生成的一些隨機數。一次隨機化容易受到探測攻擊,因此可使用周期性的隨機化(這會犧牲一些性能),這個解決方案類似于將緩存映射的隨機化作為防止側信道攻擊的保護。盡管這種緩解技術具有負面的性能開銷,但它為大多數安全敏感分支提供了完美的安全保護。
(2)BPU分區
分支預測單元(branch prediction unit,BPU)分區可使攻擊者和受害者不共享相同的結構。如,SGX代碼可使用不同于普通代碼的分支預測器,或者結構支持BPU私有分區,通過分區,攻擊者失去了與受害者產生沖突的能力。
(3)其它解決方案
除了以上的緩解措施,也可通過移除或增加性能計數器的噪聲或測量時間來消除攻擊者測量分支結果的準確能力。另一種方案是更改有限狀態機(Finite State Machines,FSM),使其更隨機,從而干擾攻擊者推斷受害者分支方向的能力。最后一種解決方案主要在于探測攻擊的痕跡,如果檢測到正在進行的攻擊,可凍結或者殺死攻擊者的進程。在SGX中攻擊者如果已經破壞了操作系統,這樣就比較難辦,檢測到攻擊程序正在進行時,需要SGX代碼重新映射自身或停止執行。