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