Intel CPU 再爆 Foreshadow 漏洞! 官方建議必要時關掉 Hyper Threading

Intel CPU 再爆 Foreshadow 漏洞! 官方建議必要時關掉 Hyper Threading

給大家一條填充題:「2018 年, Intel CPU 的 _______ 接踵而至。」大家會填甚麼?新產品?新技術?這些答案都正確,但我就想填「安全漏洞」,因為 Intel CPU 又有新漏洞了!(擺出陶大宇的掩面動作)年初的漏洞稱為 Meltdown 和 Spectre ,然後還有 Lazy FP State Restore 漏洞,到今次的事件就稱為 L1 Terminal Fault(L1TF),又名 Foreshadow(伏筆),事例實在是太多,多到快要在網站新增一個「Intel 漏洞」文章分類了!

L1 Terminal Fault 漏洞嚴重程度高達 7.9 分。

L1 Terminal Fault 漏洞嚴重程度高達 7.9 分。

高風險 L1 Terminal Fault 漏洞

今次 Intel CPU 的 Foreshadow 漏洞,危險指數高達 7.9 分,屬於高風險漏洞,但 Intel 對於處理今次事件都挺有誠意,迅速在官網解釋漏洞成因和應對措施之餘,還在 YouTube 發布影片解畫。Foreshadow 漏洞原理與年初的 Meltdown、Spectre 漏洞相似,都是關乎 Speculative Execution(推測執行)。平時 Intel CPU 在處理應用程式的指令、需取得記憶體的數據時,就會拿著 Logical Memory Address(邏輯位址),於 Page Table(分頁表)中找出相對應的 Physical Address(實體位址)。而這個搜尋動作需時,因此 CPU 會運用推測執行技術,在 L1 Data Cache 預先搜尋並「推測」Physical Address 是甚麼,猜錯的話,就會向系統發出 Terminal Fault 的訊息,然後把猜錯的數據丟棄。可是在 CPU 發出 Terminal Fault 的訊息之前,就有一段非常短的「空窗期」,可讓駭客有機可乘,知悉並偷取這些敏感數據,例如是個人密碼、登入金鑰、硬碟檔案等等。詳細解說可參考 Red Hat 的影片

拿著 Logical Address,於 Page Table 中找出相應的 Physical Address。

拿著 Logical Address,於 Page Table 中找出相應的 Physical Address 。

CPU 會透過 Speculative Execution 技術,猜測 Physical Address 是甚麼,猜錯就會把數據「丟棄」。

CPU 會透過 Speculative Execution 技術,猜測 Physical Address 是甚麼,猜錯就會把數據「丟棄」。

但中間有段短時間讓駭客有機可乘,可竊取到應該被「丟棄」的數據。

但中間有段短時間讓駭客有機可乘,可竊取到應該被「丟棄」的數據。

對 Virtualization 影響較大

不過一般用戶毋需過份擔憂,因為目前為止,尚未有案例顯示有駭客利用 Foreshadow 漏洞入侵。 Foreshadow 漏洞分為 3 個變種: L1 Terminal Fault-SGX 、 L1 Terminal Fault-OS/ SMM 以及 L1 Terminal Fault-VMM ,分別針對 Software Guard Extensions ( SGX )、 System Management Mode ( SMM )記憶體、以及 Hypervisor( VMM )。 Intel 評估 Foreshadow 對一般個人或企業電腦影響不大,因為目前已針對 SGX 和 OS / SMM 變種釋出修正微代碼,用戶只需從電腦廠方及 OS 更新修正檔便可解決。而 VMM 的變種則針對 Virtualization(虛擬化)的雲端伺服器。 Virtualization 是指在一部伺服器上,運行多個作業系統,猶如把一部伺服器分成多台電腦 / 小伺服器使用,一些大型公共雲便可透過 Virtualization 來把伺服器「分房」租給不同的企業客戶用。現代的 Xeon CPU 均支援 SMT / Hyper Threading (超線程/超執行緒)技術,單一個核心可同時執行 2 條線程,就好像有 2 個虛擬核心般,各自服務不同的 Guest OS (租戶),而這兩條線程稱為 Sibling Thread ,兩邊共用一個 L1 Cache 。若如其中一個 Sibling Thread 的租戶受駭客入侵,然後駭客利用上述 Terminal Fault 漏洞,發出要求想取得另一邊 Sibling Thread 租戶的資料,而不幸地該資料恰巧位於 L1 Cache 的話,就可被駭客成功偷取。

頭兩種關乎個人電腦及企業電腦,而第三種就與 Virtualization 伺服器相關。三種都已有修正檔更新。

頭兩種關乎個人電腦及企業電腦,而第三種就與 Virtualization 伺服器相關。三種都已有修正檔更新。

兩個 OS「租戶」使用同一個 CPU 核心,有各自的 Thread,但共用一個 L1 Cache。

兩個 OS「租戶」使用同一個 CPU 核心,有各自的 Thread,但共用一個 L1 Cache。

因此若其中一邊租戶被駭客入侵,便可看到另一邊 Thread 於 L1 Cache 的 Physical Address 數據。(紅色部分)

因此若其中一邊租戶被駭客入侵,便可看到另一邊 Thread 於 L1 Cache 的 Physical Address 數據。(紅色部分代表駭客竊取另一邊資料。)

大家齊齊更新保平安。

齊齊更新便可保平安

必要時關掉 Hyper Threading

如果兩邊 Sibling Thread 的 Guest OS 都更新好系統,就會相安無事,因為系統會定期清走 L1 Cache 的數據,亦會防止駭客有機可乘。但如果不保證另一邊 Sibling Thread 的 OS 有做足防護措施、不信任對面的話, Intel 建議系統管理員可關掉 Hyper Threading 功能來杜絕風險,不過單一核心同一時間,只能用單一個線程服務單一個 Guest OS,無疑會影響伺服器效能。

Intel 建議必要時,可關掉 Hyper Threading。

Intel 建議必要時,可關掉 Hyper Threading。

Source:Intel 官網Intel YouTubeRed Hat YouTube