北京時間2023年12月14日晚上20點左右,SUSHI、RevokeCash等多個專案發布了安全預警,警告用戶不要與任何DAPP互動。
比特叢林第一時間介入分析,發現這些項目的錢包連接器都整合了Ledger Connect Kit,而Ledger Connect Kit已被篡改以包含竊取虛擬貨幣的惡意程式碼。在晚上21時左右,Ledger發布了Connect Kit的1.1.8版本,該版本刪除了惡意程式碼。
截至目前,這次駭客事件已導致多名用戶共損失約40萬美元。
下文將針對Ledger漏洞實現過程、波及面以及發生過程、作案團隊等分析。比特叢林建議用戶重裝系統,而非簡單的清除緩存,以更徹底解決Dapp受影響問題。更多深入內容及觀點,也請關注12月22日(週五) 晚8點直播,活動資訊請見本文底部「活動預告」板塊。
Ledger問題出在哪
錢包連接器(Wallet Connector)是一種用於在去中心化應用程式(DApp)和加密貨幣錢包之間建立通訊和互動的協定或工具。其主要目的是簡化用戶與DApp 之間的數位資產管理流程,使用戶能夠使用其加密貨幣錢包與各種去中心化服務和應用程式互動。體現在使用者的使用流程上面就是在於DApp互動時,會顯示連結錢包的頁面,如下圖
該頁面就會載入各個連接器的程式碼,例如使用範圍最廣的WalletConnect等。
而這次被惡意修改的程式碼就是Ledger的連接器(Ledger Connect Kit),Ledger的Connect Kit是一種軟體開發工具包(SDK),旨在幫助開發者將Ledger硬體錢包(如Ledger Nano S、Ledger Nano X等)整合到他們的應用程式中。它提供了一系列的API和工具,使開發者能夠與Ledger硬體錢包進行交互,以實現更安全和可靠的數位資產管理。
許多DApp網站都使用該庫來連接Ledger 硬體錢包,部分網站(例如SushiSwap 和Revoke.cash)很快就將其網站下線並刪除了受影響的庫,由於目前無法有效統計有多少網站採用了該庫,我們建議使用任何DApp網站時檢查是否存在Ledger的連接器。
Ledger代碼怎麼出現的問題
經過比特叢林檢查發現是上述受影響的網站都加載了ledger錢包連接器被供應鏈攻擊,該項目引入的代碼如下:
https://cdn[.]jsdelivr[.]net/npm/@ledgerhq/connect-kit@1
截止北京時間21:10在ledger的npm發布頁面看到最新的更新是兩小時前,根據檢查發現1.1.5至1.1.7版本均為惡意改動。
目前北京時間12月15日惡意的版本被Ledger刪除
LEDGER 董事長兼執行長PASCAL GAUTHIER稱為前員工被釣魚導致。
資料來源:https://www.ledger.com/blog/a-letter-from-ledger-chairman-ceo-pascal-gauthier-regarding-ledger-connect-kit-exploit
涉案資金流向
截止目前Ledger Exploiter(0x658729879fCa881D9526480B82aE00EFc54B5c2d)地址還有33萬美元的資產留存
其中有4.334 ETH流向知名虛擬貨幣竊盜團隊Angel Drainer的熱錢包
2023 年9 月的Balancer DNS 劫持攻擊和2023 年10 月的Galxe DNS 劫持攻擊均與該團隊有關。
Angel Drainer一般作為犯罪服務的平台提供者(CaaS),可能只為本次攻擊提供了竊取虛擬貨幣的惡意程式碼,真正操作發布NPM惡意程式碼的可能另有其他團隊。
應急措施建議
錢包方
1.需確保開發及發布環境的網路安全,避免供應鏈攻擊。
2.應在程式碼中鎖定版本,不要使用@1去自動載入最新版本。例如本次出問題的「https://cdn[.]jsdelivr[.]net/npm/@ledgerhq/connect-kit@1」
3.定期對關鍵帳戶金鑰更新,並開啟MFA。
4.定期對程式碼和開發流程進行安全審計。
使用者
1. 在Ledger徹底修復前避免與任何DApp交互
2. 在Ledger修復後,清除本地(手機與電腦)的瀏覽器和涉及到DApp應用程式的緩存
3. 由於惡意程式碼被混淆,惡意程式碼可能同時取得了裝置權限,強烈建議重裝系統,更徹底解決Dapp受影響問題
專案方
1. 及時下架Ledger的連接器,避免影響更多用戶
BIT JUNGLE活動預告
Ledger安全事件緊急措施
比特叢林:計畫投入6000萬,開發硬體錢包
探討議題
1.Ledger錢包安全事件為什麼會發生?
2.一個好的錢包公司應該具備哪些基因?
3.比特叢林計畫投入6000萬打造皮夾事業的背後思考
如何收聽
12月22日週五晚間8點掃描下方海報二維碼👇