編輯:好睏
【新智元導讀】程式突然亂碼,開發者緊急「修復」!然而……
這兩天,一些開發者感覺有點懵……
一覺醒來發現,自己程式跑出來的全都是「亂碼」。
說起來,這些開發者的共同點就是都使用了開源庫「colors」和「faker」。
而且這兩個庫相當受歡迎!
僅僅在npm上,colors庫每週的下載量就超過2000萬次,並且有將近19000個專案正在使用。
faker在npm上每週的下載量超過280萬次,有超過2500個專案使用。
甚至連亞馬遜的雲計算開發工具包(aws-cdk)也用上了。
最初,使用者懷疑這些專案所使用的庫「colors」和「faker」被入侵,類似於去年coa、rc和ua-parser-js庫被惡意分子劫持的情況。
看到各種反饋之後,開發者也趕緊發文表示已經在努力「修復」了。
但事實證明,故事並沒有這麼簡單。
不幹了!
事件的開端要從這位名為「Marak Squires」的開發者說起。
近期,Marak在「colors」(GitHub上又名colors.js)加入了v1.4.44-liberty-2,並且釋出了「faker」(GitHub上又名faker.js)的6.6.6版本。
稍微對西方有所瞭解的朋友們很容易就能注意到,這個「666」有些不太對勁啊。
找了一圈發現,網上的圖都不太能放……
總之,就是和「惡魔」有著千絲萬縷的聯絡。
而Marak所做的,正是引入了一個無限迴圈的bug,讓數以千計的依賴「color」和「faker」的專案直接崩潰。
這些資訊包括文字「LIBERTY LIBERTY LIBERTY」,以及在後面跟著的一大串非ASCII字元。
這些字元也被稱為「Zalgo文字」。
當然,這又是另一個非常有意思的故事了,感興趣的朋友可以自己搜一下。
然而,時間一分一秒地過去了,自己的程式跑不了,專案的開發者也遲遲沒有提交解決方案。
開發者們不得不開始自己尋求解決方案。
很快就有人發現,只要回滾到之前的1.4.0版本,問題就解決了。
由此也就可以推斷,這個bug很有可能就來自於最新提交的「v1.4.44-liberty-2」。
透過檢視專案的歷史發現,Marak在v1.4.44-liberty-2版本的colors.js庫中添加了一個「新的美國國旗模組」,並將其推送到GitHub和npm。
就新的在程式碼中,有一段無限迴圈,會讓所有使用「colors」的程式在控制檯無休止地列印各種非ASCII字元序列。
對於「faker」,Marak除了炸了自己程式之外,還修改了GitHub repo的README頁面。
這次,Marak直接攤牌了:endgame。
Marak還提到了一個人:亞倫·斯沃茨。寫到:「Aaron Swartz到底發生了什麼?」
斯沃茨是一名美國程式設計師、企業家和著名的駭客活動家,在一場法律訴訟後「自殺」身亡。
為了使所有人都能自由獲取資訊,這位駭客從麻省理工學院校園網上的JSTOR資料庫下載了數百萬篇期刊文章,據稱他透過反覆旋轉自己的IP和MAC地址來繞過JSTOR和麻省理工學院設定的技術封鎖。
此前,在2020年11月,Marak就曾警告說,他將不再用他的「免費工作」來支援大公司了,而這些企業應該考慮用每年「六位數」的工資來補償。
「恕我直言,我將不再用我的免費工作來支援財富500強(和其他較小規模的公司)。」
「你們可以把這當作一個機會,給我發一份六位數的年薪合同,或者把這個專案fork之後,讓別人來做。」
於是,整件事的緣由逐漸明晰了起來,Marak似乎是在報復那些大型企業以及拿著開源專案賺錢的開發者。
他認為,這些人不僅大量地使用開源社群的免費軟體,但是對社群又毫無貢獻。
敢亂改自己專案?看我封你賬號
對Marak的這波迷之操作,開源社群一部分開發者表示理解,另一部分則直接「口吐芬芳芳」。
「顯然,『colors.js』的作者為沒有得到報酬而生氣......。所以他決定在每次載入他的庫時列印美國國旗......。」
嚯,有點意思啊!(doge)
資訊保安專家VessOnSecurity稱這種行為是「真**的不負責任」。
「如果你對企業免費使用你的免費程式碼有意見,就不要釋出免費程式碼。透過破壞你自己被開發者廣泛使用的專案,你不僅傷害了大企業,也傷害了所有在使用它的人。」
但是有人則認為:「將程式碼釋出到他們自己的庫中,不需要對任何事情負責。如果你不同意我的觀點,那麼請閱讀許可證中的實際法律條文,它沒有給出任何保證。如果是不負責任的,那又怎樣,他們不需要負責任。」
而GitHub一看,這個Marak怎麼能瞎搞自己的專案,封了吧!
NPM已經恢復到faker.js包的前一個版本,Github已經暫停了我對所有公共和私人專案的訪問。我有100多個專案。
軟體工程師Sergio Gómez對此表示非常不理解:「從GitHub上刪除自己的程式碼是違反他們的服務條款的?WTF? 這是一種綁架行為。」
Log4j:用愛發電,還得背鍋
Marak的「刪庫跑路」,不由得讓我們想起最近鬧得沸沸揚揚的「Log4j事件」。
據火線安全不完全統計,僅在Github上,就有60644個開源專案釋出的321094軟體包存在風險,這一漏洞可以說是影響了網際網路上70%以上企業系統的正常運轉。
由於Java應用程式通常會記錄各種各樣的事件,例如使用者傳送和接收的訊息,或者系統錯誤的詳細資訊,因此該漏洞可以透過多種方式觸發。
很快,Log4shell漏洞開始出現大規模的惡意利用。
隨著越來越多的問題被發現,Log4j的開發者們也不得不開啟了假期無償加班模式,為該專案打補丁。
雖然已經在「不眠不休地進行搶救:修復、文件、CVE、回覆諮詢了」,然而,依然有一些bug賞金獵人在對Log4j維護者進行圍追堵截。
Log4j這件事也讓更多人開始關注大企業是如何「壓榨」開源的問題。
大量的網站、軟體和應用程式依靠開源開發者來創造基本的工具和元件,他們不斷地消費,卻沒有給予足夠的回報。
而這些「孜孜不倦」地修復著安全問題的開發者們,不僅放棄了自己的閒暇時間,也沒有得到任何資金的支援。
網友對此評論道:「對color.js/faker.js作者破壞他們自己的軟體包的反應,恰好也說明了有多少企業開發者認為他們在道德上有權使用開源開發者的無償勞動,而不用做出任何回報。」
對於開原始碼的未來,大概只能等時間來告訴我們吧。
參考資料:
https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/