JavaScript 庫被注入惡意程式碼 Copay 錢包”不保”

國外知名錢包Copay最近爆出嚴重安全漏洞,據悉,此次漏洞是黑客利用該惡意程式碼獲得 ( 合法 ) 訪問熱門 JavaScript 庫,通過注射惡意程式碼從 BitPay 的 Copay 錢包應用中竊取比特幣和比特幣現金。

最近Github 使用者 Ayrton Sparling 報告了後門,Copay 開發的錢包應用在其程式碼中使用了 event-stream 依賴庫和 Flatmap-Stream 依賴項。Event-Stream,是一個用於處理 Node.js 流資料的 JavaScript npm 包。該惡意程式在預設情況下處於休眠狀態,不過當 Copay 啟動(由比特幣支付平臺 BitPay 開發的桌面端和移動端錢包應用)之後就會自動啟用。它將會竊取包括私鑰在內的使用者錢包資訊,並將其傳送至 copayapi.host 的 8080 埠上。

flatmap-stream 中的惡意程式碼會掃描使用者的 nodemodules 目錄,因為所有從 npm 下載的模組都會放在此目錄。如果發現了在 nodemodules 存在特定的模組,則將惡意程式碼注入進去,從而盜取使用者的數字貨幣。

如果想檢視自己的專案是否受到影響,可以執行:
$ npm ls event-stream flatmap-stream
如果在輸出裡面包含了 flatmap-stream 則說明你也可能被攻擊。
如果使用 yarn 則可以執行:
$ yarn why flatmap-stream
如果在輸出裡面包含了 flatmap-stream 則說明你也可能被攻擊。
如果使用 yarn 則可以執行:
$ yarn why flatmap-stream
目前已經確認所有版本的Copay錢包都被認為已被感染,BitPay團隊釋出了Copay v5.2.2,已經刪除Event-Stream和Flatmap-Stream依賴項。惡意的Event-Stream v3.3.6也已從 ofollow,noindex"> http:// npm.org 中刪除。

Cobo首席安全負責人Darker表示,這種攻擊方式很隱蔽,防範很難,建議Copay使用者斷網更新至5.2.0或者使用桌面版本轉出資產,還可將資產轉至Cobo等其它更安全的錢包。