在過去幾十年中,預(yù)測執(zhí)行無疑在處理器發(fā)展方面發(fā)揮了重要作用。熔斷和幽靈兩個漏洞展示了這種技術(shù)的潛在危險,因為靈活的代碼可以利用預(yù)測行為執(zhí)行攻擊。隨著intel對這兩個漏洞進行的補丁修正,我們現(xiàn)在擁有針對Intel secure enclave (SGX),虛擬機以及超線程通過L1終端故障攻擊(L1TF)的防范。
Foreshadow L1終端故障攻擊
Foreshadow L1終端故障攻擊是另一種難以想象的攻擊。L1是低級處理器緩存。在英特爾體系結(jié)構(gòu)中,當(dāng)推測性頁表查找失敗時會發(fā)生“終端故障”。有了這種術(shù)語,攻擊的本質(zhì)就是攻擊者可以利用英特爾cpu執(zhí)行L1緩存頁表查找的方式來獲取敏感信息。
英特爾SGX被排除在幽靈事件和崩潰討論之外。英特爾新交所(Intel SGX)創(chuàng)建了一個安全區(qū)用來存儲敏感信息,即使是系統(tǒng)管理員也不應(yīng)該看到這些信息。有了預(yù)兆,研究人員就能窺探新交所內(nèi)部,獲得極為敏感的數(shù)據(jù)。
主流服務(wù)器和桌面CPU上的超線程允許在同一執(zhí)行核心上同時執(zhí)行兩個線程,該功能稱為超線程。超線程的“魔力”之一是芯片設(shè)計者意識到核心部分,尤其是緩存,可以被多個線程使用。與增加物理核心相比,添加超線程的成本相對較小,這使它具有很大的性能優(yōu)勢。只有極少的用戶會關(guān)閉英特爾超線程技術(shù),比如HPC,大多數(shù)情況下CPU通過該技術(shù)提高了約30%的性能提升。
由于英特爾超線程內(nèi)核上的兩個線程都是使用相同的緩存資源執(zhí)行的,因此提高性能的主要方法也意味著有一個共享的一級緩存。在PC端,這不是問題,因為操作系統(tǒng)供應(yīng)商可以修復(fù)操作系統(tǒng);而如果黑客在虛擬機中創(chuàng)建了一個損壞的擴展頁表,那么系統(tǒng)可能被欺騙攻擊,hypervisor可以向其他虛擬機顯示信息。多用戶云的超線程程意味著來自兩個不同用戶的vm可以像兩個線程一樣運行在同一個物理內(nèi)核上,一個虛擬機可以使用L1TF來獲取另一個虛擬機的信息。這對于云提供商來說是件大事。
緩解
幾個月前,英特爾和第三方都披露了此漏洞。與此同時,補丁已經(jīng)發(fā)布。我們曾經(jīng)說過,裸機服務(wù)器對性能的影響可以忽略不計。在虛擬化系統(tǒng)中,給服務(wù)器打L1緩存刷新補丁就意味著關(guān)閉Intel超線程,關(guān)閉該功能會對性能產(chǎn)生巨大的負(fù)面影響。