又說騷話 - Linus 再次嚴辭拒絕Intel CPU漏洞補丁
發(fā)布時間:2020-06-09 09:15:07
2020 Windows 10 更新五月版(2004版本)現(xiàn)已面向探索者開放,包括了對WDDM 2.7的支持,但尚未啟用硬件加速GPU調度的選項。
無論你使用何種圖形顯卡(Intel,Nvidia或AMD),最新的驅動程序均不包括硬件加速的GPU調度選項。
Intel和AMD驅動程序均包含對WDDM 2.7(Windows Display Driver Model)的支持,但要注意的是Windows設置中還沒有硬件加速的GPU調度選項。
近日,Linux 內核項目負責人 Linus Torvalds 拒絕了 AWS 工程師提交的一個補丁,該補丁的目的是減輕 Intel CPU 遭遇一種新型窺探攻擊而導致數(shù)據(jù)泄露的風險。這種新型攻擊名為“探聽輔助 L1 數(shù)據(jù)采樣攻擊”,簡稱 Snoop (CVE-2020-0550)。
今年 3 月,來自 AWS 的軟件工程師 Pawel Wieczorkiewicz 率先發(fā)現(xiàn)了 Intel 處理器的這一漏洞,它可能會泄露 CPU 內部存儲器或緩存中的數(shù)據(jù),涉及 CPU 包括 Intel 旗下流行的 Xeon 和 Core 系列處理器。Pawel 迅速向 Intel 報告了此問題,隨后該漏洞被 Intel 定位為中等嚴重性漏洞。
新的 Snoop 攻擊利用了 Intel CPU 多級緩存、緩存一致性和總線監(jiān)聽等特性,通過位于 CPU 內核中的一級數(shù)據(jù)緩存(L1D),通過“總線監(jiān)聽”(bus snooping)功能 —— 在 L1D 中修改數(shù)據(jù)時發(fā)生的緩存更新操作,將數(shù)據(jù)從 CPU 中泄漏出來。
以近代 CPU 的視角來說,計算機通常會采用三級緩存的設計來提高 CPU 的運行效率。三級緩存包括 L1 一級緩存、L2 二級緩存、L3 三級緩存,這些緩存都集成在 CPU 內,它們的作用是作為 CPU 與主內存之間的高速數(shù)據(jù)緩沖區(qū)。其中 L1 最靠近 CPU 核心;L2其次;L3再次。運行速度方面:L1最快、L2次快、L3最慢;容量大小方面:L1最小、L2較大、L3最大。在執(zhí)行一項任務時,CPU 會先在最快的 L1 中尋找需要的數(shù)據(jù),找不到再去找次快的 L2,還找不到再去找 L3,L3 都沒有才去內存找。
而一級緩存其實還分為一級數(shù)據(jù)緩存(Data Cache,D-Cache,L1D)和一級指令緩存(Instruction Cache,I-Cache,L1I),分別用于存放數(shù)據(jù)及執(zhí)行數(shù)據(jù)的指令解碼,兩者可同時被CPU 訪問,減少了 CPU 多核心、多線程爭用緩存造成的沖突,提高了處理器的性能。一般CPU 的 L1I 和 L1D 具備相同的容量,例如 I7-8700K 的 L1 即為 32KB+32KB。Snoop 攻擊就是一種竊取 L1D 緩存中數(shù)據(jù)的攻擊手段。
不過 Intel 的用戶也不用驚慌,據(jù) Intel 官方解釋說,這種新攻擊“很難實施”,并且不會泄露大量數(shù)據(jù),畢竟 L1D 緩存中的數(shù)據(jù)非常有限,并且只有在任務運行時調用數(shù)據(jù)的短暫時間內才會存在?!拔覀儾徽J為 Snoop 攻擊在可信賴的操作系統(tǒng)環(huán)境下是一種實用的攻擊方法,因為要利用這一漏洞需要同時滿足很多苛刻的條件,比如攻擊的時間要正好與用戶打開程序的時間吻合,且程序調用的數(shù)據(jù)正好是攻擊者想要竊取的數(shù)據(jù)。”
該漏洞披露之后,另一位來自 AWS 的軟件工程師 Balbir Singh 為 Linux 內核提交了一個補丁,該補丁使 Linux 的應用程序能夠選擇在任務切換時自動刷新 L1D 的緩存,以降低 Linux 系統(tǒng)遭遇 Snoop 攻擊的風險。
Singh 在 4 月份曾解釋說:“這個補丁可以防止他們的數(shù)據(jù)在任務結束后被監(jiān)聽或通過旁道泄露?!彼敬蛩阍撗a丁可以隨 Linux 內核的 5.8 版一起發(fā)布?!叭绻布С?,該特性將允許基于可選加入的應用程序調用 prctl() 功能來刷新任務關閉后殘留在 CPU 中的 L1D 緩存?!?
但是,知名技術測試網(wǎng)站 Phoronix 指出,在任務結束后刷新 L1D 緩存會導致 CPU 的性能降低。Linux 內核項目負責人 Linus Torvalds 認為,這將導致使用該補丁的所有 Linux 用戶(無論是否采用 Intel CPU)的 CPU 性能降低,嚴正拒絕了該補丁,同時還一如既往地說起了騷話。
Torvalds 在回復該提交的郵件列表中寫道:“因為在我看來,這基本上是將緩存刷新指令導出到用戶空間,并為進程提供了一種方式,可以說讓與這事情無關的其他人也慢了下來?!?
“換言之,據(jù)我所知,這就是瘋狂的 Intel 發(fā)布了有缺陷的 CPU,它給虛擬化代碼帶來了問題(我對此并不太在意),但現(xiàn)在要因為它的問題影響到本來就沒有這些問題的 Linux 用戶,這是完全沒有意義的?!?
(Linus 在郵件列表中的原文)
“我不想某個應用程序跑起來就像在說 ‘哦,我是一個特別的,漂亮的,如此嬌嫩的花,我想刷新 L1D 上的每一個任務緩存,無論我在什么 CPU 上,無論它是否有漏洞’。因為這個應用程序不僅會降低自身速度,還會降低其他應用程序的速度?!?
在一番非常 Linus 式的回復下,Linus 對虛擬化的引用其實也是針對 AWS 的,AWS 和其他云服務提供商一樣,銷售的虛擬 cpu 通常啟用了同步多線程(simultaneous multithreading,SMT)功能。Linus 接著指出,“在啟用 SMT 的情況下,任務調度是分布式進行的,所以說,在任務結束與新任務開始之間刷新 L1D 緩存是非常愚蠢的?!?
值得一提的是,AWS 的首席工程師 Benjamin Herrenschmidt 在與 Red Hat Linux 內核貢獻者 Ingo Molnar 的討論中也為該補丁的爭論添加了一些背景。Herrenschmidt 承認這個補丁對 SMT 來說毫無意義,但他敦促 Linux 內核開發(fā)人員不要“把嬰兒和洗澡水一起扔掉”,并反駁了這個補丁是因為 AWS 想把超線程作為虛擬 cpu 出售的說法。Herrenschmidt 說,“這些補丁并不是要解決運行 SMT 的客戶 VM 內部出現(xiàn)的問題,也不是要保護 VM 免受同一系統(tǒng)上其他 VM 的攻擊?!?
事實上,Linus 已經(jīng)不是第一次嚴辭拒絕與 Intel CPU 有關的補丁。2018 年初,為了修補 Spectre 漏洞,Intel 工程師提供了一個間接分支限制推測(indirect branch restricted speculation, IBRS)功能的補丁。Linus 當時就在郵件列表中公開指出 IBRS 會造成系統(tǒng)性能大幅降低,直言該補丁“就是徹徹底底的垃圾”,“Intel 真的要做這個 X 一樣的東西?” 一頓口吐芬芳。
Nvidia表示已啟用對Windows 10五月版更新的支持,但最新的Game Ready 446.14 WHQL驅動程序似乎并不基于WDDM 2.7,后者已包含在Windows 10五月版更新中,這顯然也缺少硬件加速的GPU調度選項。
AMD代表證實,他們的GPU顯卡將支持硬件加速的GPU調度,但目前尚不清楚該功能何時會在穩(wěn)定版的顯卡驅動程序中推出。
上個月發(fā)布的Nvidia Developer驅動程序版本450.99包括了對WDDM 2.7的支持,并且還添加了一個開關以在Windows設置程序中啟用“硬件加速的GPU調度”,但是該功能仍未正式支持。
根據(jù)Nvidia的說法,你將能夠啟用硬件加速的GPU調度,并且顯示驅動程序也將接受該請求,但是GPU調度在“ NVIDIA display driver 450.99尚未正式支持”,并且可能無法正常工作。
一位代表說:“官方支持將隨即將發(fā)布的Game Ready Driver更新一起提供?!?/span>