楠木軒

Linux之父親手刪補丁、怒懟亞馬遜程序員 網友:我的快樂又回來了

由 嶽洪秀 發佈於 科技

“大神” Linus Torvalds 又來懟人了。

據開源中國報道,近日,Linux 內核項目負責人 Linus Torvalds 刪除了 AWS 工程師提交的一個補丁,他認為這將導致所有使用該補丁的 Linux 用户的 CPU 性能下降(無論他們是否使用英特爾 CPU) 。在回覆該郵件時表示:

在我看來,這基本上是將緩存刷新指令導出到用户空間,併為進程提供了一種方式,可以説讓與這事情無關的其他人也慢了下來。

換言之,據我所知,這就是瘋狂的 Intel 發佈了有缺陷的 CPU,它給虛擬化代碼帶來了問題(我對此並不太在意),但現在要因為它的問題影響到本來就沒有這些問題的 Linux 用户,這是完全沒有意義的。

我不想某個應用程序跑起來就像在説 ‘哦,我是一個特別的,漂亮的,如此嬌嫩的花,我想刷新 L1D 上的每一個任務緩存,無論我在什麼 CPU 上,無論它是否有漏洞’。因為這個應用程序不僅會降低自身速度,還會降低其他應用程序的速度。

也就是説,漏洞確實存在,影響不大,但如果利用這個補丁來修復反而會讓用户的電腦變得更慢。

同時,他也指出,Linus 對虛擬化的引用其實也是針對 AWS 的,AWS 和其他雲服務提供商一樣,銷售的虛擬 cpu 通常啓用了同步多線程(simultaneous multithreading,SMT)功能。

“在啓用 SMT 的情況下,任務調度是分佈式進行的,所以説,在任務結束與新任務開始之間刷新 L1D 緩存是非常愚蠢的。”

對此,有網友表示贊成,認為這是典型的 AOE 補丁,打補丁之後,無論是 AMD 還是 Intel ,都會降低性能,不能通過是正常的。

也有些網友純碎是來吃瓜的,表示 Linus 又口吐芬芳了,我的青春又回來了!(手動狗頭)

新型攻擊方式Snoop

那麼,讓大神吐槽的這個漏洞補丁是啥?

據開源中國介紹,這種新型攻擊名為“探聽輔助 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 的運行效率,三級緩存包括 L1 一級緩存、L2 二級緩存、L3 三級緩存,這些緩存都集成在 CPU 內,它們的作用是作為 CPU 與主內存之間的高速數據緩衝區。

其中 L1 最靠近 CPU 核心;L2 其次;L3 再次。運行速度方面:L1 最快、L2 次快、L3 最慢;在執行一項任務時,CPU 會先在最快的 L1 中尋找需要的數據,找不到再去找次快的 L2,還找不到再去找 L3,L3 都沒有才去內存找。

一級緩存又可以分為一級數據緩存(Data Cache,D-Cache,L1D)和一級指令緩存(Instruction Cache,I-Cache,L1I),分別用於存放數據及執行數據的指令解碼,兩者可同時被 CPU 訪問,減少了 CPU 多核心、多線程爭用緩存造成的衝突,提高了處理器的性能。

也就是説,這個漏洞一旦被攻擊者利用就會直接攻擊電腦的核心,所以,Pawel 認為這一攻擊方式是危險的,補丁是必要的。

但 Linus Torvalds 卻不這樣認為。

Intel 官方也給出瞭解釋,表示這種新攻擊很難實施,並且不會泄露大量數據,因為 L1D 緩存中的數據非常有限,並且只有在任務運行時調用數據的短暫時間內才會存在。

我們不認為 Snoop 攻擊在可信賴的操作系統環境下是一種實用的攻擊方法,因為要利用這一漏洞需要同時滿足很多苛刻的條件,比如攻擊的時間要正好與用户打開程序的時間吻合,且程序調用的數據正好是攻擊者想要竊取的數據。

至於這個補丁是否真的沒多大用處,我們也只能等待時間來證明了。

“暴脾氣”的開源之父: Linus Torvalds

在開源世界,Linus Torvalds 是個如雷貫耳的名字。技術天才、大神、開源領袖……他開發的 linux 對開源軟件運動功不可沒,是所有 Geek 們的最愛。

Linux 是一種自由和開放源代碼的類 UNIX 操作系統。該操作系統的內核由 Linus Benedict Torvalds 在 1991 年 10 月 5 日首次發佈。在加上用户空間的應用程序之後,成為 Linux 操作系統。

但是,偉大的人總有點怪脾氣,這位開源之父就經常因為講話帶有情緒,甚至是因為帶有髒話的意見而飽受非議。但大多數情況下 Linus Torvalds 憤怒的主要原因都與技術有關,並不針對人。

比如,2018 年,為了修補 Spectre 漏洞,Intel 工程師提供了一個間接分支限制推測(indirect branch restricted speculation, IBRS)功能的補丁。Linus Torvalds 當時就在郵件列表中公開指出 IBRS 會造成系統性能大幅降低,直言該補丁“就是徹徹底底的垃圾”,“Intel 真的要做這個 X 一樣的東西?”

再比如,他曾經是這樣評價C :“坦白的説,C 是一個非常可怕的語言,並且很多不合格的程序員都在使用它,這讓它變得更可怕。即使你用C語言不做任何事情也可以把那些用 C 的程序員幹掉。”

甚至連 windows 也沒逃過他的吐槽。

在一次採訪中,記者問他對微軟 Windows 操作系統的看法時,他回答道:Windows 作為一個操作系統,確實打造了許多還算 OK 的應用,其中有些還是非常不錯的。但是從操作系統跟這個角度來看的話,Windows 真的是一個很爛的操作系統。從道德角度來看,他的影響會更大些。微軟確實是在影響着世界,但是我覺得他們不應該涉及那麼廣,只顧着賺錢。”

還有,在一次課堂上,當有學生問及英偉達芯片相關的問題時,Linus 更是簡單粗暴,並且直接對着鏡頭來了這麼個動作:

儘管他自己也意識到了自己的這個壞毛病,曾經還表示閉關反省,但網友們認為這也並非什麼大問題,畢竟比起他做出的貢獻,這些反而是大神的人格魅力。