ITBear旗下自媒體矩陣:

又說騷話,Linus 再次嚴(yán)辭拒絕 Intel CPU 漏洞補(bǔ)丁

   時(shí)間:2020-06-09 09:19:48 來源:開源中國(guó)作者:伊紅-美藍(lán)編輯:星輝 發(fā)表評(píng)論無障礙通道

近日,Linux 內(nèi)核項(xiàng)目負(fù)責(zé)人 Linus Torvalds 拒絕了 AWS 工程師提交的一個(gè)補(bǔ)丁,該補(bǔ)丁的目的是減輕 Intel CPU 遭遇一種新型窺探攻擊而導(dǎo)致數(shù)據(jù)泄露的風(fēng)險(xiǎn)。

這種新型攻擊名為 “探聽輔助 L1 數(shù)據(jù)采樣攻擊”,簡(jiǎn)稱 Snoop (CVE-2020-0550)。今年 3 月,來自 AWS 的軟件工程師 Pawel Wieczorkiewicz 率先發(fā)現(xiàn)了 Intel 處理器的這一漏洞,它可能會(huì)泄露 CPU 內(nèi)部存儲(chǔ)器或緩存中的數(shù)據(jù),涉及 CPU 包括 Intel 旗下流行的 Xeon 和 Core 系列處理器。Pawel 迅速向 Intel 報(bào)告了此問題,隨后該漏洞被 Intel 定位為中等嚴(yán)重性漏洞。

新的 Snoop 攻擊利用了 Intel CPU 多級(jí)緩存、緩存一致性和總線監(jiān)聽等特性,通過位于 CPU 內(nèi)核中的一級(jí)數(shù)據(jù)緩存(L1D),通過 “總線監(jiān)聽”(bus snooping)功能 —— 在 L1D 中修改數(shù)據(jù)時(shí)發(fā)生的緩存更新操作,將數(shù)據(jù)從 CPU 中泄漏出來。

以近代 CPU 的視角來說,計(jì)算機(jī)通常會(huì)采用三級(jí)緩存的設(shè)計(jì)來提高 CPU 的運(yùn)行效率。三級(jí)緩存包括 L1 一級(jí)緩存、L2 二級(jí)緩存、L3 三級(jí)緩存,這些緩存都集成在 CPU 內(nèi),它們的作用是作為 CPU 與主內(nèi)存之間的高速數(shù)據(jù)緩沖區(qū)。其中 L1 最靠近 CPU 核心;L2 其次;L3 再次。運(yùn)行速度方面:L1 最快、L2 次快、L3 最慢;容量大小方面:L1 最小、L2 較大、L3 最大。在執(zhí)行一項(xiàng)任務(wù)時(shí),CPU 會(huì)先在最快的 L1 中尋找需要的數(shù)據(jù),找不到再去找次快的 L2,還找不到再去找 L3,L3 都沒有才去內(nèi)存找。

而一級(jí)緩存其實(shí)還分為一級(jí)數(shù)據(jù)緩存(Data Cache,D-Cache,L1D)和一級(jí)指令緩存 (Instruction Cache,I-Cache,L1I),分別用于存放數(shù)據(jù)及執(zhí)行數(shù)據(jù)的指令解碼,兩者可同時(shí)被 CPU 訪問,減少了 CPU 多核心、多線程爭(zhēng)用緩存造成的沖突,提高了處理器的性能。一般 CPU 的 L1I 和 L1D 具備相同的容量,例如 I7-8700K 的 L1 即為 32KB+32KB。Snoop 攻擊就是一種竊取 L1D 緩存中數(shù)據(jù)的攻擊手段。

不過 Intel 的用戶也不用驚慌,據(jù) Intel 官方解釋說,這種新攻擊「很難實(shí)施」,并且不會(huì)泄露大量數(shù)據(jù),畢竟 L1D 緩存中的數(shù)據(jù)非常有限,并且只有在任務(wù)運(yùn)行時(shí)調(diào)用數(shù)據(jù)的短暫時(shí)間內(nèi)才會(huì)存在。“我們不認(rèn)為 Snoop 攻擊在可信賴的操作系統(tǒng)環(huán)境下是一種實(shí)用的攻擊方法,因?yàn)橐眠@一漏洞需要同時(shí)滿足很多苛刻的條件,比如攻擊的時(shí)間要正好與用戶打開程序的時(shí)間吻合,且程序調(diào)用的數(shù)據(jù)正好是攻擊者想要竊取的數(shù)據(jù)。”

該漏洞披露之后,另一位來自 AWS 的軟件工程師 Balbir Singh 為 Linux 內(nèi)核提交了一個(gè)補(bǔ)丁,該補(bǔ)丁使 Linux 的應(yīng)用程序能夠選擇在任務(wù)切換時(shí)自動(dòng)刷新 L1D 的緩存,以降低 Linux 系統(tǒng)遭遇 Snoop 攻擊的風(fēng)險(xiǎn)。

Singh 在 4 月份曾解釋說:“這個(gè)補(bǔ)丁可以防止他們的數(shù)據(jù)在任務(wù)結(jié)束后被監(jiān)聽或通過旁道泄露。”他原本打算該補(bǔ)丁可以隨 Linux 內(nèi)核的 5.8 版一起發(fā)布。“如果硬件支持,該特性將允許基于可選加入的應(yīng)用程序調(diào)用 prctl() 功能來刷新任務(wù)關(guān)閉后殘留在 CPU 中的 L1D 緩存。”

但是,知名技術(shù)測(cè)試網(wǎng)站 Phoronix 指出,在任務(wù)結(jié)束后刷新 L1D 緩存會(huì)導(dǎo)致 CPU 的性能降低。Linux 內(nèi)核項(xiàng)目負(fù)責(zé)人 Linus Torvalds 認(rèn)為,這將導(dǎo)致使用該補(bǔ)丁的所有 Linux 用戶(無論是否采用 Intel CPU)的 CPU 性能降低,嚴(yán)正拒絕了該補(bǔ)丁,同時(shí)還一如既往地說起了騷話。

Torvalds 在回復(fù)該提交的郵件列表中寫道:“因?yàn)樵谖铱磥?,這基本上是將緩存刷新指令導(dǎo)出到用戶空間,并為進(jìn)程提供了一種方式,可以說讓與這事情無關(guān)的其他人也慢了下來。”

“換言之,據(jù)我所知,這就是瘋狂的 Intel 發(fā)布了有缺陷的 CPU,它給虛擬化代碼帶來了問題(我對(duì)此并不太在意),但現(xiàn)在要因?yàn)樗膯栴}影響到本來就沒有這些問題的 Linux 用戶,這是完全沒有意義的。”

(Linus 在郵件列表中的原文)

“我不想某個(gè)應(yīng)用程序跑起來就像在說 ‘哦,我是一個(gè)特別的,漂亮的,如此嬌嫩的花,我想刷新 L1D 上的每一個(gè)任務(wù)緩存,無論我在什么 CPU 上,無論它是否有漏洞’。因?yàn)檫@個(gè)應(yīng)用程序不僅會(huì)降低自身速度,還會(huì)降低其他應(yīng)用程序的速度。”

在一番非常 Linus 式的回復(fù)下,Linus 對(duì)虛擬化的引用其實(shí)也是針對(duì) AWS 的,AWS 和其他云服務(wù)提供商一樣,銷售的虛擬 cpu 通常啟用了同步多線程(simultaneous multithreading,SMT)功能。Linus 接著指出,“在啟用 SMT 的情況下,任務(wù)調(diào)度是分布式進(jìn)行的,所以說,在任務(wù)結(jié)束與新任務(wù)開始之間刷新 L1D 緩存是非常愚蠢的。”

值得一提的是,AWS 的首席工程師 Benjamin Herrenschmidt 在與 Red Hat Linux 內(nèi)核貢獻(xiàn)者 Ingo Molnar 的討論中也為該補(bǔ)丁的爭(zhēng)論添加了一些背景。Herrenschmidt 承認(rèn)這個(gè)補(bǔ)丁對(duì) SMT 來說毫無意義,但他敦促 Linux 內(nèi)核開發(fā)人員不要 “把嬰兒和洗澡水一起扔掉”,并反駁了這個(gè)補(bǔ)丁是因?yàn)?AWS 想把超線程作為虛擬 cpu 出售的說法。Herrenschmidt 說,“這些補(bǔ)丁并不是要解決運(yùn)行 SMT 的客戶 VM 內(nèi)部出現(xiàn)的問題,也不是要保護(hù) VM 免受同一系統(tǒng)上其他 VM 的攻擊。”

事實(shí)上,Linus 已經(jīng)不是第一次嚴(yán)辭拒絕與 Intel CPU 有關(guān)的補(bǔ)丁。2018 年初,為了修補(bǔ) Spectre 漏洞,Intel 工程師提供了一個(gè)間接分支限制推測(cè)(indirect branch restricted speculation, IBRS)功能的補(bǔ)丁。Linus 當(dāng)時(shí)就在郵件列表中公開指出 IBRS 會(huì)造成系統(tǒng)性能大幅降低,直言該補(bǔ)丁 “就是徹徹底底的垃圾”,“Intel 真的要做這個(gè) X 一樣的東西?” 一頓口吐芬芳。

而就在上個(gè)月,Linus 對(duì)自己的私人電腦進(jìn)行了升級(jí),同時(shí)公開了自己最新的主力機(jī)器配置,他把自己的 CPU 換成了 AMD Ryzen Threadripper ,放棄使用了 15 年的 Intel 處理器。

舉報(bào) 0 收藏 0 打賞 0評(píng)論 0
 
 
更多>同類資訊
全站最新
熱門內(nèi)容
網(wǎng)站首頁  |  關(guān)于我們  |  聯(lián)系方式  |  版權(quán)聲明  |  網(wǎng)站留言  |  RSS訂閱  |  違規(guī)舉報(bào)  |  開放轉(zhuǎn)載  |  滾動(dòng)資訊  |  English Version