Linux中國

明尼蘇達大學研究人員為什麼被踢出 Linux 內核貢獻者?

正如我們昨天報道的,明尼蘇達大學的研究人員被踢出了 Linux 貢獻群體,Linux 內核社區撤銷了之前他們提交的所有 Linux 內核代碼,並且,以後默認拒絕所有來自該大學的內核貢獻!

發生了什麼?是什麼讓 Linux 內核社區勃然大怒?

這一切始於 2021 年 4 月 6 日對 Linux 內核的一個看似無辜的補丁。明尼蘇達大學的一名博士生(Aditya Pakki)提交了一個一共只修改/增加了兩行的小補丁

Signed-off-by: Aditya Pakki <pakki001@umn.edu>
 net/rds/message.c | 1 +
 net/rds/send.c    | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/net/rds/message.c b/net/rds/message.c
index 071a261fdaab..90ebcfe5fe3b 100644
--- a/net/rds/message.c
+++ b/net/rds/message.c
@@ -180,6 +180,7 @@ void rds_message_put(struct rds_message *rm)
        rds_message_purge(rm);

        kfree(rm);
+       rm = NULL;
    }
 }
 EXPORT_SYMBOL_GPL(rds_message_put);
diff --git a/net/rds/send.c b/net/rds/send.c
index 985d0b7713ac..fe5264b9d4b3 100644
--- a/net/rds/send.c
+++ b/net/rds/send.c
@@ -665,7 +665,7 @@ static void rds_send_remove_from_sock(struct list_head *messages, int status)
 unlock_and_drop:
        spin_unlock_irqrestore(&rm->m_rs_lock, flags);
        rds_message_put(rm);
-       if (was_on_sock)
+       if (was_on_sock && rm)
            rds_message_put(rm);
    }

由於這個補丁很簡單,而且似乎改善了代碼的質量,它最初得到了一些成員的支持,但後來在 4 月 9 日受到了 Eric Dumazet 的質疑

而在 4 月 19 日,資深的內核貢獻者 Al Viro 斥責該貢獻者提交了一個「沒有修復任何東西的補丁」。他指出了提交垃圾代碼補丁的兩種可能性:

簡單地說,這個補丁要麼顯示出完全缺乏理解,要麼顯示出有人不真誠地行事。如果是後者[1],我可以建議尊敬的社會學家們滾蛋,不要再用故意噴出的排泄物來測試審核者了?

如果你覺得他用詞太激烈了,這背後是有原因和歷史的。

前不久,明尼蘇達大學的博士生 Qiushi Wu 和助理教授 Kangjie Lu(看起來是中國人或華裔?)提交了一篇研究論文《論通過偽裝提交在開源軟體中隱蔽地引入漏洞的可行性》。據之前發布在明尼蘇達大學的一篇新聞稿(已被刪除),該論文被 2021 年 IEEE 安全與隱私研討會接受:

CS&E 很榮幸地與大家分享博士生 Qiushi Wu 和助理教授 Kangjie Lu 為即將舉行的第 42 屆 IEEE 安全與隱私研討會所撰寫的論文。IEEE S&P 是展示計算機安全和電子隱私發展的首要論壇,並將該領域的研究人員和從業人員聚集在一起。

他們的論文《論通過偽裝提交在開源軟體中隱蔽地引入漏洞的可行性》集中討論了開源軟體的供應鏈安全。

「這項工作影響深遠,」Lu 教授說,「供應鏈安全已經成為當今的一個重要話題。我們的論文已經引起了安全界和開源社區的極大興趣。」

Wu 和 Lu 將在 5 月的虛擬會議期間展示他們的研究。

研究人員正在測試通過偽裝提交在開源軟體中隱蔽引入漏洞的可行性,也就是說,以看似有益的提交實際上引入了其他關鍵問題。結合最近發生的一些軟體供應鏈攻擊事件,看起來這是一篇很有意義的論文,也難怪會被 IEEE 會議接受。

然而,似乎他們選擇了 Linux 內核項目來進行他們的實驗來完成論文。Al Viro 發現,Aditya Pakki 的「無用補丁」很可能是這項研究的一部分。

對 Aditya Pakki 提交的另外一個補丁

    }
-   gss_release_msg(gss_msg);
+   if (gss_msg)
+       gss_release_msg(gss_msg);
 }

GKH 警告稱,不要浪費內核維護者的時間提交這種補丁,Greg Kroah-Hartman(GKH)是僅次於 Linus Torvalds 的內核項目負責人:

請停止提交已知無效的補丁。你的教授正在玩弄審查程序,以便用一些奇怪的、怪異的方式實現一篇論文。
這是不對的,這是在浪費我們的時間,我們將不得不再次向你的大學報告此事……

顯然,這不是唯一引起爭議的補丁請求。而 Leon Romanovsky 指出,還有 3 個這樣的補丁來自同一個研究人員,並認為這些補丁增加了安全漏洞:

他們故意引入內核錯誤。昨天,我看了一下從 Aditya 那裡接受的 4 個補丁,其中 3 個增加了各種嚴重的安全 「漏洞」。

面對這些公開抨擊,該大學的研究人員 Aditya Pakki 認為自己是受害者,指責內核維護者的態度

敬請停止胡亂指責,這近乎誹謗。

這些補丁是作為我寫的一個新的靜態分析器的一部分發送的,它的靈敏度顯然不是很高。我發送補丁的目的是希望得到反饋。我們不是 Linux 內核方面的專家,反覆發表這些言論讓人聽了很反感。

顯然,這一步錯了,但你的先入為主的偏見是如此強烈,你提出的指控毫無根據,這種懷疑也不會帶來任何好處。

這種態度不僅讓人討厭,而且對新手和非專家也是一種恐嚇,我再也不會發送任何補丁了。

這激怒了 GKH,他說:

你和你的團隊,已經公開承認發送了有缺陷的補丁,以了解內核社區對它們的反應,並且發表了一篇基於這項工作的論文。現在你又提交了一系列新的有明顯錯誤的補丁,那麼我應該對這樣的事情怎麼看?

它們顯然不是由一個有智慧的靜態分析工具創建的,因為它們都是完全不同的模式的結果,而且所有這些顯然根本沒有修復任何東西。 那麼,除了你和你的團隊在繼續通過發送這種無稽之談的補丁對內核社區的開發者進行試驗之外,我還能想到什麼?

……

任何有 C 語言知識的人,只要花幾分鐘就能看出你提交的文件根本沒有任何作用,所以認為一個工具創造了它們,然後你認為它們是一個有效的「修復」,這完全是你的疏忽,而不是我們的疏忽。你才是有錯的人,我們的工作不是成為你創造的工具的測試對象。

……

我們的社區不喜歡被實驗,也不喜歡通過提交已知的補丁來「測試」,這些補丁要麼是故意什麼都不做,要麼是故意引入錯誤的。 如果你想做這樣的工作,我建議你找一個不同的社區來進行你的實驗,這裡不歡迎你。

正因為如此,我現在不得不禁止你的大學今後的所有貢獻,並撕掉你以前的貢獻,因為它們顯然是以惡意的方式提交的,目的就是為了造成問題。

隨後,GKH 撤銷了明尼蘇達大學提交的大量補丁,GKH 表示:

我一直想這麼做,但最近的事件終於迫使我這麼做了。

……

這個小組提交的所有文件都必須從內核樹上撤銷,並需要再次進行審查,以確定它們是否真的是一個有效的修復。 在這項工作完成之前,請刪除這些變更,以確保沒有問題被引入代碼庫。

這個補丁集包含了「簡單」的修正,還有 68 個需要人工審查的修正。 其中一些不能被恢復,因為它們已經被恢復了,或者被確定其為無效的後續補丁所修復。這證明這些提交的文件幾乎都是錯誤的。

我將和其他一些內核開發者一起工作,以確定這些還原是否真的是有效的變更,如果是的話,以後會重新正確提交。就目前而言,還是安全為上。

我將通過我的開發樹進行,所以維護者們不需要擔心這個問題,但他們應該意識到,未來任何從 umn.edu 地址來的人提交的文件應該被默認拒絕,除非確定它實際上是一個有效的修復(即他們提供證據,你可以驗證它,但是說真的,為什麼要浪費你的時間做那些額外的工作?)

對此,你怎麼看?

本文參考信息: lore.kernel.org、news.itsfoss.com。


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國