• <dd id="3gzlp"></dd>

    <li id="3gzlp"><acronym id="3gzlp"></acronym></li>

    <span id="3gzlp"></span>

    又說騷話,Linus 再次嚴辭拒絕 Intel CPU 漏洞補丁

    伊紅-美藍
     伊紅-美藍
    發布于 2020年06月09日
    收藏 21

    openEuler項目召集令就在暑期2020,最高6萬元獎金等你來領!>>>

    近日 Linus Torvalds 拒絕了 AWS 工程師提交的一個補丁,該補丁的目的是減輕 Intel CPU 遭遇一種新型窺探攻擊而導致數據泄露的風險。 

      

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

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

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

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

    不過 Intel 的用戶也不用驚慌,據 Intel 官方解釋說,這種新攻擊「很難實施」,并且不會泄露大量數據,畢竟 L1D 緩存中的數據非常有限,并且只有在任務運行時調用數據的短暫時間內才會存在。“我們不認為 Snoop 攻擊在可信賴的操作系統環境下是一種實用的攻擊方法,因為要利用這一漏洞需要同時滿足很多苛刻的條件,比如攻擊的時間要正好與用戶打開程序的時間吻合,且程序調用的數據正好是攻擊者想要竊取的數據。”

    該漏洞披露之后,另一位來自 AWS 的軟件工程師 Balbir Singh 為 Linux 內核提交了一個補丁,該補丁使 Linux 的應用程序能夠選擇在任務切換時自動刷新 L1D 的緩存,以降低 Linux 系統遭遇 Snoop 攻擊的風險。 

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

    但是,知名技術測試網站 Phoronix 指出,在任務結束后刷新 L1D 緩存會導致 CPU 的性能降低。Linux 內核項目負責人 Linus Torvalds 認為,這將導致使用該補丁的所有 Linux 用戶(無論是否采用 Intel CPU)的 CPU 性能降低,嚴正拒絕了該補丁,同時還一如既往地說起了騷話。 

    Torvalds 在回復該提交的郵件列表中寫道:“因為在我看來,這基本上是將緩存刷新指令導出到用戶空間,并為進程提供了一種方式,可以說讓與這事情無關的其他人也慢了下來。” 

    “換言之,據我所知,這就是瘋狂的 Intel 發布了有缺陷的 CPU,它給虛擬化代碼帶來了問題(我對此并不太在意),但現在要因為它的問題影響到本來就沒有這些問題的 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 內核開發人員不要“把嬰兒和洗澡水一起扔掉”,并反駁了這個補丁是因為 AWS 想把超線程作為虛擬 cpu 出售的說法。Herrenschmidt 說,“這些補丁并不是要解決運行 SMT 的客戶 VM 內部出現的問題,也不是要保護 VM 免受同一系統上其他 VM 的攻擊。”

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

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

    本站文章除注明轉載外,均為本站原創或編譯。歡迎任何形式的轉載,但請務必注明出處,尊重他人勞動共創開源社區。
    轉載請注明:文章轉載自 OSCHINA 社區 [http://www.url23.com]
    本文標題:又說騷話,Linus 再次嚴辭拒絕 Intel CPU 漏洞補丁
    加載中
    此新聞有 48 條評論,請先登錄后再查看。
    返回頂部
    頂部
    聚看影院