關(guān)注"Python學(xué)習(xí)與數(shù)據(jù)挖掘",
設(shè)為“置頂或星標(biāo)”,第一時(shí)間送達(dá)干貨
這兩天,一些開發(fā)者感覺有點(diǎn)懵……一覺醒來發(fā)現(xiàn),自己程序跑出來的全都是「亂碼」。說起來,這些開發(fā)者的共同點(diǎn)就是都使用了開源庫「colors」和「faker」。僅僅在npm上,colors庫每周的下載量就超過2000萬次,并且有將近19000個(gè)項(xiàng)目正在使用。faker在npm上每周的下載量超過280萬次,有超過2500個(gè)項(xiàng)目使用。甚至連亞馬遜的云計(jì)算開發(fā)工具包(aws-cdk)也用上了。最初,用戶懷疑這些項(xiàng)目所使用的庫「colors」和「faker」被入侵,類似于去年coa、rc和ua-parser-js庫被惡意分子劫持的情況。看到各種反饋之后,開發(fā)者也趕緊發(fā)文表示已經(jīng)在努力「修復(fù)」了。但事實(shí)證明,故事并沒有這么簡(jiǎn)單。事件的開端要從這位名為「Marak Squires」的開發(fā)者說起。近期,Marak在「colors」(GitHub上又名colors.js)加入了v1.4.44-liberty-2,并且發(fā)布了「faker」(GitHub上又名faker.js)的6.6.6版本。稍微對(duì)西方有所了解的朋友們很容易就能注意到,這個(gè)「666」有些不太對(duì)勁啊。找了一圈發(fā)現(xiàn),網(wǎng)上的圖都不太能放……總之,就是和「惡魔」有著千絲萬縷的聯(lián)系。而Marak所做的,正是引入了一個(gè)無限循環(huán)的bug,讓數(shù)以千計(jì)的依賴「color」和「faker」的項(xiàng)目直接崩潰。這些信息包括文本「LIBERTY LIBERTY LIBERTY」,以及在后面跟著的一大串非ASCII字符。當(dāng)然,這又是另一個(gè)非常有意思的故事了,感興趣的朋友可以自己搜一下。然而,時(shí)間一分一秒地過去了,自己的程序跑不了,項(xiàng)目的開發(fā)者也遲遲沒有提交解決方案。很快就有人發(fā)現(xiàn),只要回滾到之前的1.4.0版本,問題就解決了。由此也就可以推斷,這個(gè)bug很有可能就來自于最新提交的「v1.4.44-liberty-2」。通過查看項(xiàng)目的歷史發(fā)現(xiàn),Marak在v1.4.44-liberty-2版本的colors.js庫中添加了一個(gè)「新的美國國旗模塊」,并將其推送到GitHub和npm。就新的在代碼中,有一段無限循環(huán),會(huì)讓所有使用「colors」的程序在控制臺(tái)無休止地打印各種非ASCII字符序列。對(duì)于「faker」,Marak除了炸了自己程序之外,還修改了GitHub repo的README頁面。Marak還提到了一個(gè)人:亞倫·斯沃茨。寫到:「Aaron Swartz到底發(fā)生了什么?」斯沃茨是一名美國程序員、企業(yè)家和著名的黑客活動(dòng)家,在一場(chǎng)法律訴訟后「自殺」身亡。為了使所有人都能自由獲取信息,這位黑客從麻省理工學(xué)院校園網(wǎng)上的JSTOR數(shù)據(jù)庫下載了數(shù)百萬篇期刊文章,據(jù)稱他通過反復(fù)旋轉(zhuǎn)自己的IP和MAC地址來繞過JSTOR和麻省理工學(xué)院設(shè)置的技術(shù)封鎖。此前,在2020年11月,Marak就曾警告說,他將不再用他的「免費(fèi)工作」來支持大公司了,而這些企業(yè)應(yīng)該考慮用每年「六位數(shù)」的工資來補(bǔ)償。「恕我直言,我將不再用我的免費(fèi)工作來支持財(cái)富500強(qiáng)(和其他較小規(guī)模的公司)。」「你們可以把這當(dāng)作一個(gè)機(jī)會(huì),給我發(fā)一份六位數(shù)的年薪合同,或者把這個(gè)項(xiàng)目fork之后,讓別人來做。」于是,整件事的緣由逐漸明晰了起來,Marak似乎是在報(bào)復(fù)那些大型企業(yè)以及拿著開源項(xiàng)目賺錢的開發(fā)者。他認(rèn)為,這些人不僅大量地使用開源社區(qū)的免費(fèi)軟件,但是對(duì)社區(qū)又毫無貢獻(xiàn)。敢亂改自己項(xiàng)目?看我封你賬號(hào)
對(duì)Marak的這波迷之操作,開源社區(qū)一部分開發(fā)者表示理解,另一部分則直接「口吐芬芳芳」。「顯然,『colors.js』的作者為沒有得到報(bào)酬而生氣......。所以他決定在每次加載他的庫時(shí)打印美國國旗......。」信息安全專家VessOnSecurity稱這種行為是「真**的不負(fù)責(zé)任」。「如果你對(duì)企業(yè)免費(fèi)使用你的免費(fèi)代碼有意見,就不要發(fā)布免費(fèi)代碼。通過破壞你自己被開發(fā)者廣泛使用的項(xiàng)目,你不僅傷害了大企業(yè),也傷害了所有在使用它的人。」但是有人則認(rèn)為:「將代碼發(fā)布到他們自己的庫中,不需要對(duì)任何事情負(fù)責(zé)。如果你不同意我的觀點(diǎn),那么請(qǐng)閱讀許可證中的實(shí)際法律條文,它沒有給出任何保證。如果是不負(fù)責(zé)任的,那又怎樣,他們不需要負(fù)責(zé)任。」而GitHub一看,這個(gè)Marak怎么能瞎搞自己的項(xiàng)目,封了吧!NPM已經(jīng)恢復(fù)到faker.js包的前一個(gè)版本,Github已經(jīng)暫停了我對(duì)所有公共和私人項(xiàng)目的訪問。我有100多個(gè)項(xiàng)目。
軟件工程師Sergio Gómez對(duì)此表示非常不理解:「從GitHub上刪除自己的代碼是違反他們的服務(wù)條款的?WTF? 這是一種綁架行為。」Marak的「刪庫跑路」,不由得讓我們想起最近鬧得沸沸揚(yáng)揚(yáng)的「Log4j事件」。據(jù)火線安全不完全統(tǒng)計(jì),僅在Github上,就有60644個(gè)開源項(xiàng)目發(fā)布的321094軟件包存在風(fēng)險(xiǎn),這一漏洞可以說是影響了互聯(lián)網(wǎng)上70%以上企業(yè)系統(tǒng)的正常運(yùn)轉(zhuǎn)。
由于Java應(yīng)用程序通常會(huì)記錄各種各樣的事件,例如用戶發(fā)送和接收的消息,或者系統(tǒng)錯(cuò)誤的詳細(xì)信息,因此該漏洞可以通過多種方式觸發(fā)。很快,Log4shell漏洞開始出現(xiàn)大規(guī)模的惡意利用。隨著越來越多的問題被發(fā)現(xiàn),Log4j的開發(fā)者們也不得不開啟了假期無償加班模式,為該項(xiàng)目打補(bǔ)丁。雖然已經(jīng)在「不眠不休地進(jìn)行搶救:修復(fù)、文檔、CVE、回復(fù)咨詢了」,然而,依然有一些bug賞金獵人在對(duì)Log4j維護(hù)者進(jìn)行圍追堵截。Log4j這件事也讓更多人開始關(guān)注大企業(yè)是如何「壓榨」開源的問題。大量的網(wǎng)站、軟件和應(yīng)用程序依靠開源開發(fā)者來創(chuàng)造基本的工具和組件,他們不斷地消費(fèi),卻沒有給予足夠的回報(bào)。而這些「孜孜不倦」地修復(fù)著安全問題的開發(fā)者們,不僅放棄了自己的閑暇時(shí)間,也沒有得到任何資金的支持。網(wǎng)友對(duì)此評(píng)論道:「對(duì)color.js/faker.js作者破壞他們自己的軟件包的反應(yīng),恰好也說明了有多少企業(yè)開發(fā)者認(rèn)為他們?cè)诘赖律嫌袡?quán)使用開源開發(fā)者的無償勞動(dòng),而不用做出任何回報(bào)。」對(duì)于開源代碼的未來,大概只能等時(shí)間來告訴我們吧。
參考資料:
https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/

長(zhǎng)按或掃描下方二維碼,后臺(tái)回復(fù):加群,即可申請(qǐng)入群。一定要備注:來源+研究方向+學(xué)校/公司,否則不拉入群中,見諒!
(長(zhǎng)按三秒,進(jìn)入后臺(tái))