拒絕白嫖,著名開源項目作者暴力刪庫,賬號被封!
點擊關(guān)注“SQL數(shù)據(jù)庫開發(fā)”
設(shè)為“置頂或星標”,第一時間送達干貨
還記得去年年底令全球多數(shù) Java 工程師深夜加班的 Apache Log4j 2 漏洞嗎?彼時,發(fā)現(xiàn)最初只有 3 個人贊助該開源項目的事實令許多人受到?jīng)_擊,甚至有人因此感慨道“這就是開源丑陋的一面”:當項目順利進行時,一切都很好;而一旦項目出問題了,每個人都只會去抱怨項目背后的無償維護者。
Apache Log4j 2 漏洞發(fā)生至今已一月有余,目前尚未徹底平息。不曾想,上周又發(fā)生了一起令許多開發(fā)者“頭禿”的開源事件:數(shù)千個使用了流行開源 NPM 包 faker.js 和 colors.js 的項目一夜之間突然“變磚”,不斷輸出滿屏亂碼,而“罪魁禍首”竟是項目作者 Marak Squires 故意為之。
對許多 JavaScript 和 Node.js 開發(fā)者而言,faker.js 和 colors.js 這兩個庫應(yīng)該并不陌生:
faker.js 用于在瀏覽器和 Node.js 中生成大量虛假數(shù)據(jù),在 NPM 上每周下載量近 244 萬。

colors.js,一個實現(xiàn)對顏色進行各種操作和計算的 JavaScript 庫,每周下載量約 2314 萬。

從每周下載數(shù)據(jù)可以看出,faker.js 和 colors.js 的應(yīng)用十分廣泛,如 AWS CDK 等許多流行工具均在開發(fā)過程中使用了這兩個庫,一直以來也沒有意外發(fā)生。因此,上周末有 AWS CDK 用戶看到其應(yīng)用在控制臺上不斷打印亂碼時感到無比震驚:“究竟發(fā)生了什么?”
據(jù)該用戶分享的截圖顯示,這些亂碼包括文本“LIBERTY LIBERTY LIBERTY”以及一系列非 ASCII 字符:

該用戶認為這是“由于 faker.js 導(dǎo)致的奇怪輸出”,事實證明,Ta 的猜想沒錯。據(jù) faker.js 的 GitHub 頁面顯示,該庫代碼已被全部刪除,所有 commit 信息都被改為「endgame」,且 Readme 部分也僅剩下項目作者 Marak Squires 留下的一句話:“What really happened with Aaron Swartz(Aaron Swartz 到底發(fā)生了什么)?”
(注:Aaron Swartz 是一名出色的開發(fā)人員,曾建立 Creative Commons、RSS 和著名社交網(wǎng)站 Reddit,但在 2011 年被指控非法入侵 MIT 和學術(shù)數(shù)據(jù)庫 JSTOR 以竊取文件,后于 2013 年自殺。)

不僅如此,有心人應(yīng)該已經(jīng)發(fā)現(xiàn)了上文 faker.js 下載量圖中奇怪的最新版本號“6.6.6”——要知道,與國內(nèi)普遍的認知不同,圣經(jīng)中用三個“6”連寫表示惡魔的符號,代表以撒旦為首的邪惡勢力,因此西方國家常將三個“666”視作魔鬼、撒旦等不吉利的象征。
類似事情也發(fā)生在了 colors.js 庫:Marak Squires 在 v1.4.44-liberty-2 版本中為 colors.js 庫添加了一個“new American flag module”并將其發(fā)布至 GitHub 和 NPM,而代碼中其中引入了一段無限循環(huán),讓所有使用了 colors.js 的程序都會在控制臺無休止地打印各種非 ASCII 字符的亂碼。

事后,Marak Squires 還刻意嘲諷道:“我們注意到,在 v1.4.44-liberty-2 版本的 colors.js 中有一個 Zalgo 漏洞,請相信我們正在努力解決這個問題,很快就會有一個解決方案?!?/span>
(注:Zalgo 文本原指用 Unicode 組合字符在字母上過度添加各種符號生成的一種數(shù)字文本,常用于恐怖場景以令人毛骨悚然,在此處指代那些非 ASCII 字符的亂碼。)
拒絕白嫖,一切因“錢”而起
Marak Squires 這番操作打破了許多原以為 NPM 庫被破壞的猜想,但轉(zhuǎn)而卻令更多人百思不得其解:好好的兩個開源項目,為什么 Marak Squires 突然要自己搞破壞?
問題似乎始于 2020 年 9 月 Marak Squires 遭遇的一場火災(zāi)。當時,Marak Squires 租借的房子突發(fā)大火,所有財產(chǎn)幾乎被全部燒毀,無奈之下 Marak Squires 在推特上發(fā)布求助:
“我在一場公寓火災(zāi)中失去了所有東西,幾乎無家可歸,也無法訪問我的大部分帳戶,所有值錢的東西都不見了。如果有人能給 [email protected] 一點錢,那將幫助我免于在街上凍僵,哈哈。”

在這之后,或許是求助金額尚不足以支持 Marak Squires 的生活,近十天后,他又在 GitHub 上譴責大型公司使用其開源項目卻不回饋的行為:
“恕我直言,我不會再用我的免費工作來支持財富 500 強企業(yè)了(以及其他較小規(guī)模的公司)。沒什么好說的。趁這個機會,你可以給我發(fā)一份年薪六位數(shù)的合同,或者克隆項目,讓別人來做。”

從這兩件事中,我們似乎可以窺見此次 Marak Squires 毫無征兆“自毀”項目的原因:拒絕白嫖,一切因“錢”而起。
好在據(jù) The Verge 報道,目前 colors.js 已更新至正常版本,雖然 faker.js 仍未修復(fù),但可降級至之前的 5.5.3 版本來解決問題。而 GitHub 方面似乎也因此暫時封禁了 Marak Squires 的 GitHub 賬戶:

開源開發(fā)者該如何自處?
毫無疑問,這起事件再次引起了人們對于開源開發(fā)者生存現(xiàn)狀的關(guān)注,這或許也是 Marak Squires 此次的行動目標:現(xiàn)實中,大量網(wǎng)站、軟件和應(yīng)用均依賴免費的開源項目來創(chuàng)建基本工具和組件,但就如同 Apache Log4j 2 一樣,這些開源項目背后維護者的財政困境鮮為人知。
針對此次事件,諸多資深開發(fā)者也表達出了各自的看法。
資訊安全專家 VessOnSecurity 認為:“這太不負責任了!如果你在發(fā)布免費代碼時遇到問題,那就不要發(fā)布。你破壞自己被廣泛使用的項目,不僅傷害了大企業(yè),也傷害了所有使用它的人。這會導(dǎo)致人們害怕更新,因為新版本可能并不安全。”
軟件工程師 Sergio Gómez 則認為:“從 GitHub 刪除他自己的代碼居然違反了他們的服務(wù)條款?這是道德綁架!我想我們需要開始分散托管免費軟件源碼了?!?/span>
許多網(wǎng)友也對此各執(zhí)一詞。
@Mike_Walsh:“老實說,這人完全有權(quán)破壞自己的工作,尤其是當他利用自己的空閑時間維護這些項目,卻沒有看到一分紅利時。為什么大公司就應(yīng)該從別人的無償勞動中賺到一大筆錢,甚至他們還聲稱這樣做是‘出于對開源的熱愛’?所以我覺得這樣很公平,你對我好我會回報你,但如果你在背后捅了我一刀,也同理。”
@GT500:“就我的理解來看,我認為這個人忘記了開源的精神,只是貪婪罷了。如果他想要別人為他的軟件付費,那他就不應(yīng)該在開源許可下發(fā)布它。開源的倡導(dǎo)者花了幾十年的時間試圖讓公司使用開源軟件,試圖說服他們這是免費的、應(yīng)該使用它,且永遠不必為此付費。而這個人的行為會導(dǎo)致什么?我們可能會回到公司只使用垃圾付費軟件的黑暗時光,因為他們會覺得已經(jīng)不能再信任開源項目了。”
從開源中來,到開源中去??赡軐芏嚅_源開發(fā)者而言,最終目標并不是金錢,更多是希望人們共同參與項目維護,以此回饋社區(qū)。那么在你看來,你認為這一矛盾該如何緩解,開源開發(fā)者又該如何自處呢?
參考鏈接:
https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/
https://www.theverge.com/2022/1/9/22874949/developer-corrupts-open-source-libraries-projects-affected
https://web.archive.org/web/20220105101202/https://twitter.com/marak/status/1320465599319990272
最后給大家分享我寫的SQL兩件套:《SQL基礎(chǔ)知識第二版》和《SQL高級知識第二版》的PDF電子版。里面有各個語法的解釋、大量的實例講解和批注等等,非常通俗易懂,方便大家跟著一起來實操。 有需要的讀者可以下載學習,在下面的公眾號「數(shù)據(jù)前線」(非本號)后臺回復(fù)關(guān)鍵字:SQL,就行 數(shù)據(jù)前線 ——End——
后臺回復(fù)關(guān)鍵字:1024,獲取一份精心整理的技術(shù)干貨 后臺回復(fù)關(guān)鍵字:進群,帶你進入高手如云的交流群。 推薦閱讀
神奇的 SQL,GROUP BY 真扎心,原來是這樣! 中國改名最成功的 5 所大學:改名如改命! 一座城市靠稅收能年入多少錢? 超開心,國家發(fā)錢了! 有了這 4 款腳本工具,老板再也不怕我寫爛SQL了


