他潛伏三年想插它後門,最終還是輸給了另一個他

3月29日,微軟公司的開發人員 Andres Freund 在調查 SSH 性能問題時,發現了 xz 軟件包中一個涉及混淆惡意代碼的供應鏈攻擊。進一步溯源發現 SSH 使用的上游 liblzma 庫被植入了後門代碼,惡意代碼可能允許攻擊者通過後門版本的 SSH 非授權獲取系統的訪問權限。惡意代碼修改了 liblzma 代碼中的函數,該代碼是 XZ Utils 軟件包的一部分,鏈接到 XZ 庫的任何軟件都可以使用此修改後的代碼,並允許攔截和修改與該庫一起使用的數據。

在互聯網的世界裏,有這樣一羣默默無聞的英雄,他們憑藉着對技術的熱愛和對開源事業的執着,爲我們日常使用的軟件默默貢獻着自己的力量。這些人就是開源軟件的維護者。

今天這篇文章要從 Lasse Collin 開始講起。Lasse 是 xz/liblzma 項目的維護者。這是個不起眼的小項目,但對於 Lasse 來說,它承載了自己多年的心血。

XZ 是一種通用的數據壓縮格式,幾乎存在於每個 Linux 發行版中。XZ Utils 是一個命令行工具,包含 XZ 文件和 liblzma 的壓縮和解壓縮功能,而 liblzma 是一種用於數據壓縮的類似 zlib 的 API,並且還支持舊版。lzma 格式。

作爲一名兼職的開源貢獻者,Lasse 需要在有限的業餘時間裏處理各種瑣碎的維護工作:修復 bug、開發新功能、回覆用戶問題,他幾乎是一個人撐起了整個項目。雖然工作量不小,但看到項目在自己手中一點點成長、完善,Lasse 還是感到無比欣慰。

然而,現實的壓力開始向 Lasse 襲來。長期高強度的義務勞動讓他身心俱疲,再加上現實生活的重重困擾,Lasse 感到自己已經到了極限。“也許,是時候找個接班人了。” 他無奈地在社區裏發出了這樣的呼聲。

就在這時,一個名叫 Jia Tan 的開發者出現在 Lasse 面前,表示願意幫助維護項目。Jia Tan 在私下裏也給了 Lasse 不少支持和鼓勵。“太好了,終於有人能分擔一些工作了。” Lasse 心裏的石頭落了地。

可好景不長,一些 “索取黨” 用戶開始對 Lasse 發起了猛烈的攻勢:

文檔怎麼還不更新?

這個 bug 都過去一週了,什麼時候才能修?

新功能開發太慢了,你行不行啊?

面對鋪天蓋地的質疑和要求,Lasse 感到無比委屈:“大家要理解,我也有自己的本職工作和生活啊,這個項目只是我的業餘愛好。”

在 “索取黨” 的不斷締逼下,Lasse 的維護熱情迅速消磨殆盡。他開始懷疑自己是否真的能勝任這個角色。正當 Lasse 處於人生的低谷時,Jia Tan 再次向他伸出了 “援手”:“不如把項目交給我吧,我會好好打理的。

最終,在內憂外患的雙重打擊下,Lasse 選擇了放手。Jia Tan 如願接管了 xz/liblzma 項目。至此,這似乎是一個皆大歡喜的結局:Lasse 卸下了沉重的包袱,Jia Tan 得到了夢寐以求的機會,用戶們也有了新的維護者。

然而,悲劇的一幕出現了。Jia Tan 在掌控項目後不久,竟然在代碼中植入了一個嚴重的安全漏洞!這一切,原來都是精心策劃的陰謀。而那些不斷對 Lasse 施壓的 “索取黨”,無疑也要揹負一定的責任。

這裏不僅有技術層面的漏洞,還有人性的弱點。這位 Jia Tan 通過細緻入微的社會工程學手法,攻擊者一步步騙取了原維護者的信任:

首先,他通過兩年來高質量的代碼貢獻,塑造了技術過硬、品行端正的正面形象,消除了他人的戒心。

接着,他敏銳地察覺到原維護者正處於倦怠期,主動提出分擔工作,給予支持和鼓勵,藉機拉近關係。

同時,他還利用其他用戶對原維護者的不滿情緒,暗示自己可以接替其位置,漸漸把持項目。

這一環扣一環的心理操縱過程,正是社會工程學的典型應用。

當攻擊者試圖說服其他維護者採用有問題的代碼庫時,他可能使用了以下話術和策略:反覆強調新版本的諸多 “優秀特性”,引誘對方上鉤;對提出質疑的人輕描淡寫,讓對方覺得是自己多慮了;表現出真誠、耐心、樂於助人的一面,讓人難以生疑。

這是社會工程學中 “製造權威”、“利用從衆心理” 等常見手法。

這操作手法,是不是和那位在百度貼吧潛伏5年只是爲了復仇的勇士很像?

更牛逼的是,這位兄臺的 ID 也很講究:Jia Tan

這像什麼?很明顯是中國人名字的漢語拼音啊!心機太深了,順便還黑了一把中國人。

目前 GitHub 官方已經將 xz 倉庫給封了

Lasse 的悲劇,只是開源江湖中維護者羣體的一個縮影。他們默默無聞卻身負重任,常常要獨自面對來自方方面面的壓力:用戶的苛責、生活的重擔、項目的困境......在這些重壓之下,即便是最有激情的維護者,也難免會心力交瘁。正是他們的付出,才撐起了整個開源軟件的生態,但他們的處境卻常常被忽視。

反思這個故事,我們不難發現一些讓人警醒的細節。首先,“索取黨” 用戶的不當言行,往往會成爲壓垮維護者的最後一根稻草。誠然,提需求本身並無不妥,但過分苛刻、不近人情的要求只會適得其反。其次,項目的安全問題不容小覷。當維護者精疲力竭時,往往就是不法分子伺機而動的時候。最後,開源生態的良性發展,離不開所有參與者的共同努力。用戶要學會體諒和支持,企業要主動承擔社會責任,而平臺方更要爲維護者提供必要的保障措施。

Lasse 的故事還在繼續,無數像他一樣的開源英雄仍在默默耕耘。他們或許沒有鮮花和掌聲,但正是有了他們的奉獻,我們才能享受到如此豐富多彩的開源世界。作爲開源社區的一員,我們應該心存感激,多一些理解和包容,少一些指責和催促

Hacker News 討論帖:https://news.ycombinator.com/item?id=39865810

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章