08.16 犧牲安全換速度的惡果:英特爾芯片再添3個數據洩露安全漏洞

App、內核、虛擬機、SGX、SMM,全都危險了

8月14日,英特爾再次披露3個芯片級漏洞,惡意軟件和惡意虛擬機可利用這些漏洞從計算機內存中盜取秘密信息。

牺牲安全换速度的恶果:英特尔芯片再添3个数据泄露安全漏洞

口令、個人信息、金融記錄和加密密鑰均在受影響範圍之列,可被攻擊者從其他應用和其他客戶的虛擬機,以及英特爾安全擴展(SGX)飛地及系統管理模式(SMM)內存中抽取出來。SGX是本應防護這些秘密不受惡意代碼干擾的英特爾安全技術。SMM則是用戶計算機的隱藏管理員,對計算機硬件有著完全控制權,且可訪問計算機上存儲的所有數據。

總體而言,英特爾的桌面、工作站和服務器CPU都談不上安全。最重要的是,這些芯片並未按文檔所述的方式工作:芯片技術手冊稱,內存可被標記為訪問受限的。但實際情況卻並不是這樣。也就是說,脆弱主機上的惡意軟件和雲平臺上的客戶虛擬機,都可以從其他軟件和其他客戶的虛擬機中提取出敏感數據。

很明顯,Chipzilla的管理層犧牲了安全來換取速度上的提升:他們的處理器在軟件執行上堪稱飛一般的速度,內存保護機制不過是事後聊以自慰的擺設。在對性能的無盡追求中,保護用戶數據安全的防護措施被當成了可選項而不是必選項。

去除了預測執行設計缺陷的重製版英特爾處理器將於今年晚些時候開始發售。以操作系統和虛擬機管理程序補丁形式放出的緩解措施應該很快就會推出。如果你擔心惡意軟件或惡意虛擬機會吞噬掉寶貴的數據,那就應該打上這些補丁。請睜大眼睛緊盯補丁推出情況。某些軟件緩解措施需要先安裝上英特爾今年二季度的微代碼更新。

因為涉及到從CPU一級數據緩存中抽取秘密信息,英特爾將這3個漏洞定名為“一級終端故障(L1TF)”漏洞:

1. CVE-2018-3615

CVE-2018-3615影響SGX。將於本週舉行的Usenix安全研討會上由多家學術機構予以披露。英特爾稱:“裝有帶預測執行和SGX功能微處理器的系統,可能會被利用邊信道分析獲取了本地用戶訪問權的攻擊者,從SGX保護的飛地未授權抽取出一級數據緩存中的信息。”發現該漏洞的團隊將之命名為“預兆(Foreshadow)”。需要安裝英特爾微代碼更新才可以修復此漏洞。

2. CVE-2018-3620

CVE-2018-3620影響操作系統和SMM。英特爾稱:“裝有帶預測執行和地址翻譯功能微處理器的系統,可能會被利用終端頁面錯誤和邊信道分析獲取了本地用戶訪問權的攻擊者,未授權抽取出一級數據緩存中的信息。”想要修復該漏洞,操作系統內核便需打上補丁,SMM則要進行微代碼更新。

3. CVE-2018-3646

CVE-2018-3646影響虛擬機管理程序和虛擬機。英特爾稱:“裝有帶預測執行和地址翻譯功能微處理器的系統,可能會被利用終端頁面錯誤和邊信道分析獲取了客戶操作系統本地用戶訪問權的攻擊者,未授權抽取出一級數據緩存中的信息。”想要保護數據,微代碼、操作系統和虛擬機管理程序都要更新。

操作系統和虛擬機管理程序級漏洞(CVE-2018-3620和CVE-2018-3646),是大學研究人員告知了SGX漏洞(CVE-2018-3615)後,由英特爾的工程師發現的。關於這些漏洞的影響,Chipzilla稱:

惡意應用可能會推斷出操作系統內存或其他應用中數據的值。惡意客戶虛擬機可能會推斷出虛擬機管理器(VMM)內存或其他客戶虛擬機內存中數據的值。SMM外的惡意軟件可能會推測出SMM內存中數據的值。英特爾SGX飛地內部或外部的惡意軟件都可能推測出另一塊SGX飛地中的數據。

值得指出的是,運行有多臺客戶提供的虛擬機的雲平臺上,這些客戶操作系統必須打上補丁,否則,它們可能利用共享的底層主機硬件來盜取鄰近虛擬機的信息。

這意味著,客戶只應被允許使用平臺提供的內置了緩解措施的內核,或者虛擬機管理軟件必須被配置為不會安排陌生人的虛擬機運行在相同的物理CPU內核上,或者禁用超線程技術。正如 Red Hat 指出的,應用這些緩解措施可能會對性能造成打擊。

英特爾表示:

部分市場,尤其是運行有傳統虛擬化技術的那些(主要在數據中心),建議客戶或合作伙伴採取額外的措施以保護他們的系統。這主要是為防止IT管理員或雲提供商無法保證所有虛擬化操作系統都經更新的情況。這些額外措施包括啟用特定的虛擬機管理程序核心調度功能,或選擇在某些特定場景中禁用超線程技術。雖然這些額外的措施可能只適用於相對較小的部分市場,但我們覺得有必要為所有的客戶提供解決方案。

這些特定案例中,某些工作負載的性能或資源利用率可能會受到不同程度的影響。英特爾及其行業合作伙伴正努力開發多個解決方案以消除此影響,客戶可根據自身需要從中選擇最佳方案。作為解決問題的一部分,我們已經開發了在系統運行期間檢測L1TF相關漏洞利用的方法,僅在必要時應用緩解措施。我們已向部分合作夥伴提供了該功能的預發佈微代碼以供測試評估,希望能在此後加以推廣。

針對上述漏洞,英特爾發佈了帶有詳細信息的技術白皮書和FAQ。Red Hat 和Oracle也有各自的闡述。

同時,SUSE推出了一份在線諮詢,微軟也為其Windows拿出了安全建議,Xen和VMware對漏洞情況做了詳細描述,Linux內核補丁的情況也能在網上查到。換句話說,用戶現在就可以檢查自己的操作系統和虛擬機管理器,找到相應的更新。

到底哪兒出錯了?

我們來對問題打個總結:基本上,英特爾的CPU無視了操作系統內核頁表。微軟Windows和Linux之類的操作系統在內存中維護有名為頁表的特殊數據結構,負責描述物理RAM該怎麼分配給活躍應用程序。

這些頁表在英特爾手冊中也有定義,負責指定應用程序能不能在內存段中讀寫信息。頁表有個名為“當前(present)”的設置位,設置為“1”表明某塊物理RAM可供當前應用程序用於存儲信息。如果設置為“0”,表明並未分配任何物理RAM,對該區域的任何訪問都應遭遇“內存頁錯誤”的封鎖。

應用程序訪問自身在內存中的數據用的是虛擬內存地址,該地址必須轉換為指向RAM芯片中某個部分的物理內存地址才行。

為此,處理器會查詢頁表,以將應用程序的虛擬內存地址轉換成相對應的物理RAM地址。該查詢會耗費掉一定的時間,而現代英特爾CPU不會等待頁表查完,它們會根據緩存在一級數據緩存中的所請求信息的副本,預測性地執行代碼——即便頁表指定該數據在物理內存中已失效而不應被讀取。

其結果就是,惡意軟件或惡意客戶操作系統可利用該特性,通過強制標記頁面為不存在並觀察有哪些數據被預測性地從一級緩存中取出,來確定它本不應讀取的數據。當然,這些操作得在處理器的頁面故障電路介入並中斷處理之前做完。

這就要求漏洞利用代碼要運行在執行受害代碼的同一塊物理CPU核心上——因為漏洞利用代碼需要觀察一級數據緩存。

微軟TechNet和虛擬化博客上也有更進一步的細節描述。

另外,微軟Azure、AWS和谷歌計算引擎都已經推出了緩解措施。

避免被黑

必須指出:目前為止,還沒有惡意軟件在利用相關的熔斷和幽靈漏洞,上述預測執行漏洞也未見野生漏洞利用,這有部分原因是因為業內已經推出了緩解措施,還有部分原因是因為另有其他更容易的黑客方法。

相比用特定方法搞定底層硬件開發出惡意軟件來緩慢抽取內存中秘密,用虛假網站騙得用戶輸入網上銀行登錄口令要容易得多。某種程度上,我們還得感謝有別的方法可以讓黑客不去利用這些芯片級漏洞。

英特爾發言人稱:“今年早些時候發佈的偽代碼,加上14號開始放出的相關操作系統和虛擬機管理軟件更新,已解決了L1TF問題。”

我們在網站上提供了更詳細的信息,並一直建議用戶更新系統,因為保持系統更新是受到保護的最佳方式。


分享到:


相關文章: