熔斷 2.0:新英特爾CPU攻擊
新漏洞可致虛擬機、安全飛機及內核內存泄密,英特爾已做緩解措施。
英特爾處理器再曝安全漏洞,黑客可以突破由虛擬機管理程序、操作系統內核及英特爾SGX安全飛地構建的安全邊界,令伺服器和終端系統上的數據面臨泄密風險。新攻擊技術可用於獲取受保護內存區域中的口令及加密密鑰等敏感數據,且之前的CPU攻擊防護措施無法阻擋。
一年前,熔斷和幽靈攻擊震驚整個網路安全行業,昭示出操作系統內核與非特權應用之間,或同一伺服器上不同虛擬機之間的內存隔離並不像之前設想的那麼不可逾越。這些攻擊利用了現代CPU所謂的預測執行這一性能增強功能,通過分析CPU緩存中的數據訪問情況來盜取秘密。
熔斷和幽靈攻擊曝光之後,計算機安全研究社區又發現了另外的邊信道攻擊技術,攻擊者無需直接訪問秘密數據,只要分析數據在預測執行期間是怎樣流經CPU微架構組件的,就能重現想要窺探的秘密。
5月14日,多所大學和私營產業的研究人員披露了與熔斷和幽靈具相同影響的新攻擊方法——已於去年遵循負責任披露原則向英特爾私下報告。與熔斷和幽靈相比,新攻擊技術的不同點在於,數據泄露利用的是英特爾CPU的緩衝區而不是緩存。
研究人員用於共享新漏洞信息的網站上寫道:與現有攻擊不同,我們的攻擊可以從CPU內部緩衝區 (行填充緩衝區、載入埠、存儲緩衝區) 泄露任意在用數據,包括從未存儲在CPU緩存中的數據。研究表明,針對預測執行攻擊的現有防禦措施不足以抵禦此新攻擊技術,某些時候甚至會使情況變得更糟。因為漏洞深藏於英特爾CPU內部,即便部署了現有緩解措施,攻擊者仍能運用我們的方法獲取到敏感數據。
新型攻擊:微架構數據採樣
英特爾將該新攻擊類型命名為微架構數據採樣(MDS),並將上報的問題分成了具有各自CVE編號的4個漏洞:
CVE-2018-12126 -- 微架構存儲緩衝區數據採樣(MSBDS)
CVE-2018-12127 -- 微架構載入埠數據採樣(MLPDS)
CVE-2018-12130 -- 微架構填充緩衝區數據採樣(MFBDS)
CVE-2019-11091 -- 微架構數據採樣非緩存內存(MDSUM)
荷蘭阿姆斯特丹自由大學系統與網路安全組(VUSec) 的研究論文分析了其中3個漏洞——MLPDS、MFBDS和MDSUM。VUSec將自己的邊信道攻擊技術稱為 「流氓在用數據載入(RIDL:Rogue In-Flight Data Load)」。
另一篇研究論文由密歇根大學、伍斯特理工學院、奧地利格拉斯科技大學、魯汶大學和阿德萊德大學的研究人員共同撰寫,介紹了第四個漏洞MSBDS。他們將自己的技術命名為 「餘波(Fallout)」,可從存儲緩衝區泄露數據,也可用於泄露內存信息以輔助攻擊者突破內核地址空間布局隨機化(KASLR)安全機制。KASLR是操作系統中的一種安全機制,用來增加內存崩潰漏洞的利用難度的。
研究人員在網站上寫道:諷刺的是,與前代處理器相比,最近的 Coffee Lake Refresh i9 CPU 中,英特爾為防止熔斷漏洞而引入的硬體反制措施,反而更有利於展開Fallout攻擊。
過去一年中,一些同類漏洞也被其他研究人員各自發現並報告給了英特爾。
該現象表明研究社區對CPU及硬體相關漏洞的興趣正在上升,並再次證明了不同研究人員能夠各自獨立地發現同樣的漏洞——意味著攻擊者也能。
攻擊原理以及受影響用戶
這些漏洞影響伺服器、桌面電腦及筆記本電腦中所用的現代英特爾CPU。英特爾在其網站及向軟體開發者提供的白皮書中公布了可能受影響的CPU列表。
VUSec表示,AMD和ARM在審閱了他們的論文後稱其CPU不受新漏洞影響。
漏洞可為惡意進程所利用,比如未授權應用甚或瀏覽器內運行的JavaScript腳本,用以突破內存隔離界限,從其他進程中獲取數據。
VUSec研究人員給出了自己的概念驗證——用一台虛擬機從共享同一塊物理CPU核心的另一台虛擬機獲取到了其/etc/shadow文件內容。共享同一塊物理CPU核心是多租戶雲環境的常見設置。在另一個概念驗證中,研究人員通過未授權進程從Linux內核獲取到了/proc/version信息。
由於是邊信道攻擊,數據值並不是直接讀取的,而是通過CPU預測執行期間數據被載入進緩衝區的方式推斷出來的。預測執行是用來在進程請求指令路徑之前預先執行以加快操作速度的。
預測執行演算法試圖在程序實際走上某代碼執行路徑之前猜測出該程序將會選擇的執行路徑。如果猜錯了,那產生的數據通常會被丟棄,程序執行繼續沿正確路徑進行。看上去似乎沒什麼邏輯問題,不過是提高效率節省時間的一種優化而已。然而,預測執行卻也給本地攻擊者留下了推斷出緩存或緩衝區中數據相關信息的機會。
VUSec研究人員在論文中表示:RIDL源自一些微優化措施,這些微優化可導致CPU向預測性負載饋送無關的CPU內部在用數據。基本上,RIDL相當於在安全域隔離牆上放了個玻璃杯,讓攻擊者可以聽到CPU組件間的喃喃自語。
獲取這些數據的途徑有兩條:
1) 不分青紅皂白地收集一切,然後進行篩選,以求理解並抽取出感興趣的片段;
2) 迫使受害進程訪問攻擊者感興趣的那些數據。
比如說,在虛擬機概念驗證攻擊中,研究人員就反覆打開SSH連接並嘗試以root身份驗證登錄。每次嘗試都迫使目標虛擬機的操作系統去訪問含有系統中所有賬戶密碼散列值的/etc/shadow文件。
該嘗試行為花了約24小時才滲漏到足夠的信息以重建出整個shadow文件,但在其他MDS攻擊場景中,目標數據幾毫秒就能被恢復出來了。具體耗時取決於攻擊者想要達成的目標和他們選擇的方法。
如何緩解MDS攻擊
英特爾在電子郵件聲明中稱:
「
我們最近的第八代和第九代英特爾Core處理器,以及第二代Xeon可擴展處理器很多都在硬體層就已解決了微架構數據採樣(MDS)。至於其他受影響產品,今天開始可用的微代碼更新,及相應的操作系統及虛擬機管理軟體更新會加以緩解。我們在網站上提供了更多信息,並持續鼓勵大家保持系統更新,因為這是受到保護的最佳方式之一。
CPU微代碼更新為操作系統及軟體開發人員提供了一條新的指令,可用於覆蓋緩衝區及防止過期數據暴露。與幽靈緩解措施類似,該微代碼更新可作為UEFI/BIOS更新的一部分分發,以便固化該緩解措施;也可由操作系統供應商分發,然後在每次重啟時由內核再次載入應用。
即便缺乏微代碼更新,軟體及操作系統供應商也可運用特定的指令序列來達成相同的緩衝區覆蓋效果。英特爾的白皮書中詳細記錄了這些指令序列,不同處理器系列各有差異。
基於軟體的緩解措施比微代碼緩解措施對性能的影響更大。但無論哪一種緩解措施,最終都需要操作系統和軟體供應商切實開始使用緩衝區覆蓋指令。這意味著用戶還需從他們的操作系統和虛擬機管理程序供應商處找尋補丁。
VUSec的另一個建議是禁用同步多線程(SMT),也就是英特爾超線程技術。這麼做不能完全緩解所有攻擊,但可以阻止大部分攻擊,並讓其他攻擊更難以執行。禁用SMT的不利方面是可能會影響到某些工作負載的性能。英特爾在其文檔中對使用SMT的環境有所建議。
值得指出的是,去年與CPU緩衝區相關的另一個漏洞被曝光後,OpenBSD開發人員決定在其內核調度器中默認禁用SMT。
當時OpenBSD的開發人員表示:因為很多現代計算機不再在BIOS設置中提供禁用超線程的功能,我們在我們的調度器中提供了禁用額外處理器線程的途徑。而由於我們懷疑超線程存在重大風險,我們決定默認禁用它們。
同時,VUSec研究人員認為「發現解決特定邊信道預測執行攻擊的緩解措施並非長期解決方案,因為能繞過這些緩解措施的新攻擊會源源不斷湧出。
「
我們的經驗教訓是,以軟體緩解措施解決RIDL類攻擊並不輕鬆,我們需要更底層的緩解措施以終結預測執行攻擊時代。RIDL不適用於軟體緩解,更底層的緩解措施才是發展方向。
但問題是,清除預測執行引入的風險所需的架構性調整,可能意味著要放棄某些我們已然習慣的CPU性能——那些我們如今已明白是以安全為代價換來的性能。
新漏洞信息共享網站:
https://mdsattacks.com/
MLPDS、MFBDS和MDSUM漏洞研究論文:
https://mdsattacks.com/files/ridl.pdf
MSBDS漏洞研究論文:
https://mdsattacks.com/files/fallout.pdf
英特爾公布的受影響CPU列表:
https://software.intel.com/security-software-guidance/insights/deep-dive-cpuid-enumeration-and-architectural-msrs#MDS-CPUID
英特爾有關緩解措施的信息:
https://www.intel.com/content/www/us/en/architecture-and-technology/mds.html
相關閱讀
英特爾晶元新漏洞暴露計算機上所有數據
打上熔斷和幽靈補丁後 CPU哭了
幽靈和熔斷將會再現 設備永遠不會真正安全