當前位置:
首頁 > 最新 > Intel CPU 根本性的安全風險:超線程

Intel CPU 根本性的安全風險:超線程

自從英特爾推出超線程(一般名為同步多線程)以來,關於要不要禁用這項功能的爭論幾乎完全圍繞它對性能造成的影響。這項功能首次亮相時,許多程序對於系統擁有虛擬CPU核心而不是第二個物理晶元意味著什麼存在誤解並不罕見(那時候無一例外地是一個插座一個核心,程序也並不區別對待物理CPU核心和邏輯CPU核心)。隨著軟體和操作系統的更新,超線程逐漸深入人心,現在不大需要關閉它以保持性能。但是在爆出Spectre、Meltdown和Foreshadow等漏洞之後,人們對於超線程的安全影響深表擔憂。

OpenBSD的創始人西奧?德拉特(Theo de Raadt)認為超線程再也靠不住,默認情況下就應該禁用。IT外媒ExtremeTech與德拉特進行了一番交流,討論了這個問題以及他和開源軟體社區的其他開發人員為何擔心超線程的安全風險。

按照德拉特的說法,每個操作系統都要麼添加在禁用同步多線程的功能(英特爾的超線程是實現SMT的特定技術),要麼在修改調度程序,「避免不同安全域的SMP cpu上出現合租(cotenancy)現象。」對稱多處理(SMP)是指一塊晶片上有多個CPU核心的現代生產工藝,所有核心可以訪問共同的內存和設備池。相比之下,英特爾的超線程共享物理核心與邏輯核心之間的某些資源,包括轉換後備緩衝器(TLB)、L1數據緩存和分支目標緩存(BTC),而不提供區別對待安全域、隔離兩個CPU核心之間數據的任何功能。

正如我們之前所討論的,Spectre、Meltdown和Foreshadow這些漏洞都鑽了英特爾CPU在推測執行指令時所出現的某些行為的空子。雖然推測執行是一種由來已久且經過驗證的可提高整體CPU性能的技術,但德拉特認為三個不同的問題共同導致了這些問題。他寫道:

英特爾CPU在不執行任何安全檢查的情況下獲取、解碼和執行(包括數據負載),如果事後發現有誤就解除它們。其他晶元廠商生產的CPU遇到的Spectre問題不大嚴重,但英特爾面臨的這種情況很嚴重。

由於英特爾CPU事先沒有執行安全檢查,將L1D與TLB緊密聯繫起來,因此英特爾的L1D緩存存在非常驚人的「緩存行(cache line)來自哪裡,我們不關心」錯誤,這導致來自不同許可權域的緩存行中的數據對推測指令來說變得可見,這導致了進一步的Spectre問題。

未經安全檢查的同樣的推測應用於寄存器。在訪問FPU寄存器之前,英特爾甚至沒有檢查FPU是否已被啟用。因此,在運行指令之前,英特爾晶元其實沒有執行任何安全檢查。所有決定都是在最後做出的。這意味著所有指令序列都存在Spectre副作用,我們只是等待有人發現更糟糕的後果並發布。

德拉特還抨擊了英特爾的披露政策,特別指出OpenBSD不得不研究其他項目(比如Xen和FreeBSD)的變通方法,以創建自己的解決方案。他認為,我們可能會繼續看到與Spectre有關的更多安全漏洞,黑客有可能結合使用鑽這些漏洞空子的不同方法,突破安全模式。可以說,Foreshadow就是這樣一種攻擊。雖然它比Spectre的首批變種來得更複雜,但也可以用來突破英特爾的軟體防護擴展(即SGX),而SGX原本不受這種攻擊的影響。甚至這些攻擊有可能被用來泄漏地址信息,這意味著Spectre和Rowhammer可以結合起來。在黑客眼裡,這是不斷饋贈的禮物。

到目前為止,OpenBSD是第一個要求完全禁用超線程的操作系統;英特爾給出的官方指導是,如果已經部署了其他所有修復程序和補丁,不需要禁用超線程。但實際上要保證在沒有硬體限制的情況下,保持和尊重所有必要的安全上下文是極其困難的,硬體限制防止在不同安全域中運行的兩個不同進程同時運行。即使你從安全域的角度可以確保CPU上運行的進程兼容,但只要其中一個進程的安全域發生轉變,就必須從運行安全域的CPU核心中驅逐它,並將它放到別的地方――在此過程中清除緩存和TLB。現代操作系統調度程序經常在CPU核心之間移動工作負載以優化執行,但是以安全的名義強迫CPU這麼做可能會給性能帶來嚴重的影響。我們已經在Spectre中看到了這方面的一番跡象,不過暴露它的測試往往是最糟糕的情況。

AMD受到影響嗎?

到目前為止,關於Spectre、Meltdown和Foreshadow的幾乎所有討論都集中在英特爾上。這有一個實際的原因。這些攻擊據認為會對雲和企業伺服器提供商的安全構成威脅,而英特爾主導著這些市場。在推出Epyc之前,英特爾佔據x86伺服器市場高達99%的份額,每年銷售的伺服器絕大多數是x86機器。AMD已經在開始削弱英特爾的市場霸主地位,但首席執行官蘇姿豐表示,她的公司目標是在2018年年底之前市場份額達到5%左右。即使AMD和英特爾嚴格上來說同樣面臨風險,但漏洞披露後,幾乎完全由英特爾擔責。

雖然這在將來可能發生變化,但目前的證據表明,AMD CPU並不像英特爾CPU那樣容易受到攻擊。AMD發布了一份聲明,表明它不受被英特爾稱為L1TF(L1終端漏洞)的Foreshadow的影響。它建議客戶眼下不要實施Foreshadow保護措施,聲明其CPU受到內置於Epyc CPU中的硬體分頁架構技術的保護。

對AMD有利的另一個地方是,該公司實施SMT的方法有別於英特爾實施SMT的方法。我們之前僅從對性能造成的影響這方面討論了這些差異,但上面這張幻燈片確實清楚地顯示,L0/L1/L2 ITLB和L1/L2 DTLB是共享的,但是「由SMT標記」,這意味著它們只能被擁有它們的線程來訪問。魔鬼絕對在於這類問題的細節中,我們不想暗示這一張幻燈片表明了AMD實施SMT的程度或是不是很安全,但AMD確實似乎在某些方面實施了英特爾所沒有的保護措施。比如說,未來的攻擊可能基於緩存驅逐而不是推測負載,這種類型的標記可能無法防範這種另外的攻擊手法。德拉特在交談時特別指出,儘管不知道CPU是否最終被證明容易受到這種類型的攻擊,但出於謹慎的考慮,OpenBSD還作了一些更改,禁用AMD CPU上的SMT和CMT(這是Bulldozer的核心共享技術)。

截至本文發稿時,OpenBSD 6.4(預計10月/11月發布)是第一個完全避免使用超線程、默認情況下禁用該功能的操作系統,但其他操作系統(比如Red Hat)已宣布,它們將發布控制措施有所更新的內核,以便用戶選擇要不要禁用這項功能。其他供應商會不會學德拉特的樣,這取決於接下來會披露什麼樣的漏洞以及下一輪攻擊的嚴重程度。英特爾已宣布,即將發布的Cascade Lake平台將包含針對一些Spectre變種的硬體修復,其他變種將由軟體解決方案或軟硬體結合的方法加以對應。安全行業的所有人似乎都同意這一點:將來會出現與Spectre有關的目前還未公之於眾的新披露和安全漏洞。

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

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


請您繼續閱讀更多來自 雲頭條 的精彩文章:

全棧雲,青雲QingCloud來了!
谷歌雲COO離職:外界猜測或重返英特爾任CEO

TAG:雲頭條 |