作者:極客Web3,來源:作者推特@eternal1997L
剛才,Ledger Connect Kit的npm庫1.1.5/1.1.6/1.1.7被駭客攻擊,其中植入了攻擊邏輯。
Ledger Connect Kit是用於dApp連接Ledger錢包的一個庫,被很多dApp集成,發佈於Ledger的npm管理網站JSDELIVR上。
Ledger在該網站的帳戶被盜,駭客將該庫替換為了有害版本。
在這次攻擊的檔案中可以看到,駭客直接用Drainer類別取代了正常的視窗邏輯。
Drainer顧名思義就是榨取器,不僅會彈出偽造的DrainerPopup彈跳窗,也會處理各種資產的轉帳邏輯。
在Drainer類別的start()方法中,會檢查該錢包的餘額,如果小於駭客設定的minimalDrainValue=0.001
主幣,則不會啟動攻擊。
顯然,在任何常見的EVM系網路上,餘額小於這個數字的錢包都不太可能有任何有價值的資產,駭客也不想浪費時間。
然後開始搜尋sweets“甜點”,也就是你的資產。
對不同的資產,駭客喪心病狂地佈置了約30多個case,包括ETH/BSC/ARB等知名主網的主幣和其上的知名項目的代幣、NFT等,只要你有相應的資產,就會直接觸發轉帳動作。
以其中transferNative()轉走主幣為例,雖然發送這一步驟還是要取得簽名的,但中招的用戶應該不少。
Ledger應對方法很簡單:奪回帳號控制權,更新庫版本1.1.8,發布新庫。
可以看到1.1.8的更新記錄,沒有任何實際內容,只有版本號碼變化,因為github上的程式碼庫並沒有出問題。
Ledger在發布新版本後,一是可以讓開發者使用最新的1.1.8版本而非被駭客取代的版本,二是可以讓使用者檢查是否正在使用有問題的版本。
修復方法
對使用者而言,應造訪先造訪https://cdn.jsdelivr.net/npm/@ledgerhq/connect-kit@1 看看圖中劃出來這部分文字是否是1.1.8 ,或更高的版本,如果是則表示安全。
如果不是,進入瀏覽器的開發者工具,清除快取後完成修復。
對開發者而言,應該更新專案內的npm依賴。已經上線的項目的且不是在線動態引用庫的項目,並且使用了有問題版本的,應該重新編譯和部署。
Q:我不是Ledger用戶,會不會受影響?
A:根據Ledger官方的介紹,這個函式庫是用來連接Ledger錢包的。但駭客修改了彈跳窗邏輯,其他錢包用戶也可能受影響。
Q:助記詞或私鑰會被偷嗎?
A:不會。不論冷錢包和熱錢包,其keyring私鑰管理模組都只在限定的場景內交出助記詞和私鑰(一般是用戶要求查看助記詞)。不可能暴露給任何其他函數呼叫。