您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關Linus Torvalds拒絕Intel CPU漏洞補丁的示例分析,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
近日 Linus Torvalds 拒絕了 AWS 工程師提交的一個補丁,該補丁的目的是減輕 Intel CPU 遭遇一種新型窺探攻擊而導致數(shù)據(jù)泄露的風險。
這種新型攻擊名為“探聽輔助 L1 數(shù)據(jù)采樣攻擊”,簡稱 Snoop (CVE-2020-0550)。今年 3 月,來自 AWS 的軟件工程師 Pawel Wieczorkiewicz 率先發(fā)現(xiàn)了 Intel 處理器的這一漏洞,它可能會泄露 CPU 內(nèi)部存儲器或緩存中的數(shù)據(jù),涉及 CPU 包括 Intel 旗下流行的 Xeon 和 Core 系列處理器。Pawel 迅速向 Intel 報告了此問題,隨后該漏洞被 Intel 定位為中等嚴重性漏洞。
新的 Snoop 攻擊利用了 Intel CPU 多級緩存、緩存一致性和總線監(jiān)聽等特性,通過位于 CPU 內(nèi)核中的一級數(shù)據(jù)緩存(L1D),通過“總線監(jiān)聽”(bus snooping)功能 —— 在 L1D 中修改數(shù)據(jù)時發(fā)生的緩存更新操作,將數(shù)據(jù)從 CPU 中泄漏出來。
以近代 CPU 的視角來說,計算機通常會采用三級緩存的設計來提高 CPU 的運行效率。三級緩存包括 L1 一級緩存、L2 二級緩存、L3 三級緩存,這些緩存都集成在 CPU 內(nèi),它們的作用是作為 CPU 與主內(nèi)存之間的高速數(shù)據(jù)緩沖區(qū)。其中 L1 最靠近 CPU 核心;L2其次;L3再次。運行速度方面:L1最快、L2次快、L3最慢;容量大小方面:L1最小、L2較大、L3最大。在執(zhí)行一項任務時,CPU 會先在最快的 L1 中尋找需要的數(shù)據(jù),找不到再去找次快的 L2,還找不到再去找 L3,L3 都沒有才去內(nèi)存找。
而一級緩存其實還分為一級數(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ù)非常有限,并且只有在任務運行時調(diào)用數(shù)據(jù)的短暫時間內(nèi)才會存在?!拔覀儾徽J為 Snoop 攻擊在可信賴的操作系統(tǒng)環(huán)境下是一種實用的攻擊方法,因為要利用這一漏洞需要同時滿足很多苛刻的條件,比如攻擊的時間要正好與用戶打開程序的時間吻合,且程序調(diào)用的數(shù)據(jù)正好是攻擊者想要竊取的數(shù)據(jù)。”
該漏洞披露之后,另一位來自 AWS 的軟件工程師 Balbir Singh 為 Linux 內(nèi)核提交了一個補丁,該補丁使 Linux 的應用程序能夠選擇在任務切換時自動刷新 L1D 的緩存,以降低 Linux 系統(tǒng)遭遇 Snoop 攻擊的風險。
Singh 在 4 月份曾解釋說:“這個補丁可以防止他們的數(shù)據(jù)在任務結束后被監(jiān)聽或通過旁道泄露?!彼敬蛩阍撗a丁可以隨 Linux 內(nèi)核的 5.8 版一起發(fā)布?!叭绻布С郑撎匦詫⒃试S基于可選加入的應用程序調(diào)用 prctl() 功能來刷新任務關閉后殘留在 CPU 中的 L1D 緩存?!?nbsp;
但是,知名技術測試網(wǎng)站 Phoronix 指出,在任務結束后刷新 L1D 緩存會導致 CPU 的性能降低。Linux 內(nèi)核項目負責人 Linus Torvalds 認為,這將導致使用該補丁的所有 Linux 用戶(無論是否采用 Intel CPU)的 CPU 性能降低,嚴正拒絕了該補丁,同時還一如既往地說起了騷話。
Torvalds 在回復該提交的郵件列表中寫道:“因為在我看來,這基本上是將緩存刷新指令導出到用戶空間,并為進程提供了一種方式,可以說讓與這事情無關的其他人也慢了下來?!?nbsp;
“換言之,據(jù)我所知,這就是瘋狂的 Intel 發(fā)布了有缺陷的 CPU,它給虛擬化代碼帶來了問題(我對此并不太在意),但現(xiàn)在要因為它的問題影響到本來就沒有這些問題的 Linux 用戶,這是完全沒有意義的?!?nbsp;
(Linus 在郵件列表中的原文)
“我不想某個應用程序跑起來就像在說 ‘哦,我是一個特別的,漂亮的,如此嬌嫩的花,我想刷新 L1D 上的每一個任務緩存,無論我在什么 CPU 上,無論它是否有漏洞’。因為這個應用程序不僅會降低自身速度,還會降低其他應用程序的速度。”
在一番非常 Linus 式的回復下,Linus 對虛擬化的引用其實也是針對 AWS 的,AWS 和其他云服務提供商一樣,銷售的虛擬 cpu 通常啟用了同步多線程(simultaneous multithreading,SMT)功能。Linus 接著指出,“在啟用 SMT 的情況下,任務調(diào)度是分布式進行的,所以說,在任務結束與新任務開始之間刷新 L1D 緩存是非常愚蠢的?!?/p>
值得一提的是,AWS 的首席工程師 Benjamin Herrenschmidt 在與 Red Hat Linux 內(nèi)核貢獻者 Ingo Molnar 的討論中也為該補丁的爭論添加了一些背景。Herrenschmidt 承認這個補丁對 SMT 來說毫無意義,但他敦促 Linux 內(nèi)核開發(fā)人員不要“把嬰兒和洗澡水一起扔掉”,并反駁了這個補丁是因為 AWS 想把超線程作為虛擬 cpu 出售的說法。Herrenschmidt 說,“這些補丁并不是要解決運行 SMT 的客戶 VM 內(nèi)部出現(xiàn)的問題,也不是要保護 VM 免受同一系統(tǒng)上其他 VM 的攻擊?!?/p>
事實上,Linus 已經(jīng)不是第一次嚴辭拒絕與 Intel CPU 有關的補丁。2018 年初,為了修補 Spectre 漏洞,Intel 工程師提供了一個間接分支限制推測(indirect branch restricted speculation, IBRS)功能的補丁。Linus 當時就在郵件列表中公開指出 IBRS 會造成系統(tǒng)性能大幅降低,直言該補丁“就是徹徹底底的垃圾”,“Intel 真的要做這個 X 一樣的東西?” 一頓口吐芬芳。
而就在上個月,Linus 對自己的私人電腦進行了升級,同時公開了自己最新的主力機器配置,他把自己的 CPU 換成了 AMD Ryzen Threadripper ,放棄使用了 15 年的 Intel 處理器。
看完上述內(nèi)容,你們對Linus Torvalds拒絕Intel CPU漏洞補丁的示例分析有進一步的了解嗎?如果還想了解更多知識或者相關內(nèi)容,請關注億速云行業(yè)資訊頻道,感謝大家的支持。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。