百萬周下載量 node-ipc 包以反戰(zhàn)為名進(jìn)行供應(yīng)鏈投毒
vue-cli 的依賴項(xiàng) node-ipc 包正在以反戰(zhàn)為名進(jìn)行供應(yīng)鏈投毒,該包在 npm 每周有上百萬下載量。
知名技術(shù)網(wǎng)站 V2ex 的一條帖子爆出了這個(gè)問題,用戶 simbaCheng 在使用 npm 構(gòu)建前端項(xiàng)目時(shí),啟動項(xiàng)目后桌面自動創(chuàng)建了一個(gè)《 WITH-LOVE-FROM-AMERICA.txt 》文件,點(diǎn)開之后發(fā)現(xiàn)內(nèi)容是空的。
simbaCheng 被嚇一跳,以為自己電腦中毒了。在網(wǎng)友的熱心幫助下,發(fā)現(xiàn)該 txt 文件是 vue-cli 的依賴項(xiàng) node-ipc 包的作者 RIAEvangelist 在投毒,該作者是個(gè)反戰(zhàn)人士,還特意新建了一個(gè) peacenotwar 倉庫來宣傳他的反戰(zhàn)理念。
然而網(wǎng)友繼續(xù)深扒后,發(fā)現(xiàn)該作者還有更惡毒的投毒行為。如果說往用戶桌面寫 txt 文件屬于激進(jìn)的反戰(zhàn)行為,那么知乎用戶 @賀師俊 所介紹的 這個(gè) Issue 中的舉動則是徹底的惡意攻擊:
攻擊源碼在倉庫中仍可找到。源碼經(jīng)過壓縮,簡單地將一些關(guān)鍵字符串進(jìn)行了 base64 編碼。其行為是利用第三方服務(wù)探測用戶 IP,針對俄羅斯和白俄羅斯 IP,會嘗試覆蓋當(dāng)前目錄、父目錄和根目錄的所有文件,把所有內(nèi)容替換成 ?。
但在提交了上面惡意攻擊代碼后,也許是意識到自己行為的嚴(yán)重性,該作者在半天后把該惡意攻擊改成了“較和平”的“反戰(zhàn)” TXT 文本,正如本文開頭所描述的一般。但無論如何這仍然是一種惡劣的攻擊行為,嚴(yán)重破壞了開源生態(tài)中的信任,它最壞的后果是帶來強(qiáng)代碼審核,各大代碼托管平臺會對代碼注釋、變量常量命名進(jìn)行審核。
注意:該作者清晰地知道自己在做什么,以及這些代碼意味著什么,他在 issue 里明確指出了下游可以消除影響的變通方法。在該 vue-cli issue 對話 中,RIAEvangelist 更是大方承認(rèn)自己的惡意代碼是針對俄羅斯和白俄羅斯用戶
而且,這不是 RIAEvangelist 和他的這個(gè) node-ipc 包第一次引起爭議了,早在 2020 年 node-ipc 就因?yàn)槠淦婀值摹癲on't be a dick”許可證引起了爭議,尤雨溪還出面回應(yīng):
后續(xù):
- vue-cli 發(fā)布了新版本,將 node-ipc 的版本鎖定到 v9.2.1
附受影響項(xiàng)目的解決方式:
- 按照 readme 正常 install
- 構(gòu)建結(jié)束后,用編輯器全局搜索'peacenotwar',將其全部刪除
- 然后項(xiàng)目的node_models目錄下,將'peacenotwar'目錄刪除
- '項(xiàng)目/node_modules/node-ipc/node-ipc.js'這個(gè)文件中引用'peacenotwar'的代碼注釋掉
- 然后正常啟動項(xiàng)目即可。