編輯:好睏
【新智元導讀】程序突然亂碼,開發者緊急「修復」!然而……說起來,這些開發者的共同點就是都使用了開源庫「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字符。當然,這又是另一個非常有意思的故事了,感興趣的朋友可以自己搜一下。然而,時間一分一秒地過去了,自己的程序跑不了,項目的開發者也遲遲沒有提交解決方案。很快就有人發現,只要回滾到之前的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還提到了一個人:亞倫·斯沃茨。寫到:「Aaron Swartz到底發生了什麼?」斯沃茨是一名美國程序員、企業家和著名的黑客活動家,在一場法律訴訟後「自殺」身亡。為了使所有人都能自由獲取信息,這位黑客從麻省理工學院校園網上的JSTOR數據庫下載了數百萬篇期刊文章,據稱他通過反覆旋轉自己的IP和MAC地址來繞過JSTOR和麻省理工學院設置的技術封鎖。此前,在2020年11月,Marak就曾警告說,他將不再用他的「免費工作」來支持大公司了,而這些企業應該考慮用每年「六位數」的工資來補償。「恕我直言,我將不再用我的免費工作來支持財富500強(和其他較小規模的公司)。」「你們可以把這當作一個機會,給我發一份六位數的年薪合同,或者把這個項目fork之後,讓別人來做。」於是,整件事的緣由逐漸明晰了起來,Marak似乎是在報復那些大型企業以及拿着開源項目賺錢的開發者。他認為,這些人不僅大量地使用開源社區的免費軟件,但是對社區又毫無貢獻。對Marak的這波迷之操作,開源社區一部分開發者表示理解,另一部分則直接「口吐芬芳芳」。「顯然,『colors.js』的作者為沒有得到報酬而生氣......。所以他決定在每次加載他的庫時打印美國國旗......。」信息安全專家VessOnSecurity稱這種行為是「真**的不負責任」。「如果你對企業免費使用你的免費代碼有意見,就不要發布免費代碼。通過破壞你自己被開發者廣泛使用的項目,你不僅傷害了大企業,也傷害了所有在使用它的人。」但是有人則認為:「將代碼發布到他們自己的庫中,不需要對任何事情負責。如果你不同意我的觀點,那麼請閱讀許可證中的實際法律條文,它沒有給出任何保證。如果是不負責任的,那又怎樣,他們不需要負責任。」而GitHub一看,這個Marak怎麼能瞎搞自己的項目,封了吧!NPM已經恢復到faker.js包的前一個版本,Github已經暫停了我對所有公共和私人項目的訪問。我有100多個項目。軟件工程師Sergio Gómez對此表示非常不理解:「從GitHub上刪除自己的代碼是違反他們的服務條款的?WTF? 這是一種綁架行為。」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/
