Linus Torvalds刪除AWS工程師提交的補丁表示這是愚蠢的行為
“大神” 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 更是簡單粗暴,並且直接對著鏡頭來了這麼個動作:
儘管他自己也意識到了自己的這個壞毛病,曾經還表示閉關反省,但網友們認為這也並非什麼大問題,畢竟比起他做出的貢獻,這些反而是大神的人格魅力。