“大神” 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 又口吐芬芳了,我的青春又回來了!(手動狗頭)
1
新型攻擊方式 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 攻擊在可信賴的作業系統環境下是一種實用的攻擊方法,因為要利用這一漏洞需要同時滿足很多苛刻的條件,比如攻擊的時間要正好與使用者開啟程式的時間吻合,且程式呼叫的資料正好是攻擊者想要竊取的資料。
至於這個補丁是否真的沒多大用處,我們也只能等待時間來證明了。
2
“暴脾氣”的開源之父: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 更是簡單粗暴,並且直接對著鏡頭來了這麼個動作:
儘管他自己也意識到了自己的這個壞毛病,曾經還表示閉關反省,但網友們認為這也並非什麼大問題,畢竟比起他做出的貢獻,這些反而是大神的人格魅力。