可怕!月下載量 800 萬的開源庫被植入比特幣後門
21CTO導讀:npm 成也依賴,坑也依賴!2016 年 3 月,npm 就炸鍋一次。一個 npm 模組的開發者撤回了自己的程式碼,導致諸如react 和 babel 等大量重要專案出問題了。
11 月 27 日npm圈又炸鍋了,因為一個廣泛使用的依賴庫 event-stream 在被原維護者dominic tarr轉讓給right9ctrl之後被植入了竊取比特幣的後門。
我們是怎麼一步一步掉坑的?
event-stream 是一個用於處理 node.js 流資料的 java npm 包,它使得建立和使用流變得容易,正是因此,它也受到了廣大開發者的歡迎,目前這個庫每週有 200 萬的下載量。
數月前,event-stream庫的作者者@dominictarr 因為缺乏時間和興趣無法繼續維護這個庫了,於是就將該庫轉讓給了一個完全不認識卻又想要維護的陌生人@right9ctrl ,噩夢就此開始了。
@dominictarr:
(@right9ctrl)他發郵件給我,說他想維護這個模組,於是我把模組所有權移交給了他。我沒有從這個模組得到任何回報,而且我已經好久不使用這個模組了,大概有好幾年了吧。
9 月 8 日,新維護者@right9ctrl 開始了初步動作,首先釋出了 event-stream 3.3.6 版本的更新,並在其中加入了一個全新的模組——flatmap-stream,彼時這個模組中並沒有惡意功能。
9 月 16 日,@right9ctrl 重寫了程式碼並刪除了對 flatmap-stream 的依賴,之後又推出新版本,這意味著更新不會自動升級。
10 月 5 日,flatmap-stream 0.0.1 版本被一個名為“hugeglass”的使用者推送到了 npm。而這次釋出的更新中該模組就被加入了竊取比特幣錢包並轉移出餘額的功能。
因此,自 10 月 5 日以來,任何通過 event-stream 庫並使用被植入惡意程式碼 flatmap-stream 的開發者都可能受到惡意指令碼的攻擊。而據統計,自 2018 年 9 月更新以來,惡意包已下載近 800 萬次。且原作者也無奈地表示,自己也沒有許可權去修改。
event-stream原作者的迴應
收到其他開發者的譴責後,event-stream 原作者dominic tarr在 github 上發表宣告做出了迴應。
ofollow,noindex" target="_blank">https://gist.github.com/domini ... 83b3a
大意如下:
使用者將維護的負擔壓在作者身上,而他開發這個庫不是出於利他動機,是因為好玩。從開發中學習並獲得樂趣,將維護交給另一個人是因為分享也是一種學習。
為什麼要把這個軟體包專案交給一個陌生人?
因為當它不再有趣,你從維護中得不到任何東西。一開始他並沒有從 right9ctrl 身上感受到惡意,他以為這是一位真心想幫助他的人。
與其他貢獻者分享 commit access/publish 權力在 node/npm 社群是很流行的。
他認為有兩種方法解決這個問題:給維護者錢,或者使用者也應該承擔部分維護的責任。
如何知道是否中招了?該怎麼辦?
目前對於開發者受到此漏洞的影響程度尚未可知,但是當前我們的首要任務還是檢查自己是否使用了相關的惡意庫,例如執行以下程式碼:
$ npm ls event-stream flatmap-stream
...
...
如果在輸出裡面包含了 flatmap-stream 則說明你也可能被攻擊。
倘若確認受到了影響,接下來你首先要做的是從應用程式中刪除惡意軟體包,可以通過恢復到 event-stream 版本 3.3.4 來執行此操作。
綜合自:csdn + solidot