雖然你這麼說,但我也一臉懵逼啊!開源JS庫遭遇供應鏈攻擊
有使用者在event-stream JS庫內發現惡意程式碼
近日一個開源JS庫event-stream的repo中有人釋出了題為I don’t know what to say.(不知道該說啥好了)的Issue。在Issue中釋出者(FallingSnow)提到他發現程式碼中引用了一些惡意模組。
上週便是有人發現了這段程式碼,但這段程式碼經過混淆無法判斷其實際功能,最近兩天才被安全人員判明真身:利用引用的外部惡意依賴庫,它可以竊取使用者Copay加密貨幣錢包中的密幣。
目前已經確定引用的惡意依賴庫為flatmap-stream,目前這個惡意模組也已經被作者刪除,但還有個問題是:黑客是怎麼進行這次供應鏈攻擊的呢?
想著很難,做著很簡單
得益於開源的優勢,很容易就能看到Github使用者@right9ctrl提交了這段惡意程式碼。然而引用的flatmap-stream庫之前從未在npm中被下載過,結合他在event-stream中的一系列騷操作,可以知道這並非是操作失誤,而是精心策劃的一次攻擊行為。
但黑客又是怎麼獲得這個JS庫的許可權呢?其實很簡單,只要給當前維護者發個郵件就行了……
之前的維護者也在Issue下回復,說他收到了郵件說有人想接管這個庫,就把它拱手送人了,目前他也沒有這個庫的釋出許可權。
影響巨大
這個庫下載量非常高,僅僅一週就有幾百萬次的下載,且惡意程式碼已經存在了接近三個月。在此事件曝出後,使用者應及時檢視自己的專案是否會受到影響,並及時更新相關依賴。
可利用如下程式碼判斷當前依賴版本:
npm ls event-stream flatmap-stream
事件後續
之前的維護者表明自己並不會為此次事件負責,並質問其他開發人員如果他們對這種事很在意怎麼自己不上卻當鍵盤俠。
後續也有開發人員回覆,有人認為他仍要為這種公開的內容負責,也有人認為雖然他對此次事件不負責任,但仍應妥善處理許可權並遵循相關開發規範。
參考連結
ofollow,noindex" target="_blank">https://github.com/dominictarr/event-stream/issues/116