加密橋漏洞如何導致 2 億美元的“去中心化人群搶劫”
加密貨幣橋接服務 Nomad 將自己描述為“一種可實現安全跨鏈通信的樂觀互操作性協議”,如果兌換成美元,其名義價值為 1.907 億美元的代幣已被耗盡。
“我們正在全天候工作以解決這種情況,并已通知執法部門并保留了領先的區塊鏈情報和取證公司,”該公司通過 Twitter表示。“我們的目標是查明涉及的賬戶并追蹤和追回資金。”
Nomad 允許加密貨幣持有者在不同的區塊鏈上交易他們的代幣,這些區塊鏈是用于跟蹤加密資產的分布式公共分類賬。
此類橋接服務在代幣交易者中代表了一種已知的安全風險。這是以太坊聯合創始人 Vitalik Buterin在 Reddit 上思考“橋梁的基本安全限制”。
以下是一些最近被黑的橋梁: Ronin Bridge(6 億美元);量子比特橋(8000 萬美元);蟲洞橋(3.2億美元);Meter.io 橋(440 萬美元);和 Poly Network Bridge(返還 6.1 億美元)。
最后,這是 James Prestwich在 4 月份與 Wired 的談話:“任何鏈上資本都會受到 24/7/365 的攻擊,因此橋梁將永遠是一個受歡迎的目標。”
- Prestwich 是Nomad 的創始人兼首席技術官。
根據 Paradigm 安全研究員“samczsun”的說法,Nomad 被利用是由于人們(有些人沒有諷刺意味)稱之為“智能合約”的一個漏洞。
巧合的是,在2022 年 6 月 6 日對 Nomad 代碼的安全審計 [PDF] 中發現的許多缺陷中似乎都引用了此錯誤。
標識為“QSP-19 Proving With An Empty Leaf”的報告調用了接受空bytes32值的驗證檢查并建議:“驗證函數的 _leaf 輸入Replica.sol:prove不為空。”
Nomad 對此建議的回應是駁回,審計師對此回應說:“我們認為 Nomad 團隊誤解了這個問題。”
驗證不充分的代碼似乎存在于process()Nomad ERC20 橋接合約 ( Replica.sol:process) 中的函數中,位于程序的一部分中,其目的與prove()審計報告中引用的函數相似。它旨在接受輸入值并查看它是否是 Merkle 樹的一部分,Merkle 樹是一種樹狀數據結構,將散列數據值存儲在其葉節點中。該代碼應該檢查消息以查看它們是否包含有效的 Merkle 根。
然而,Nomad 團隊顯然用值 0x00初始化了可信根,這具有驗證每條消息的效果。
事實證明,這個錯誤導致的黑客攻擊非常簡單,以至于在最初的攻擊之后,數十個地址通過復制交易并插入其地址來接收資金來進行模仿盜竊。因此,該事件被描述為“去中心化的人群搶劫”,盡管“去中心化金融”或 DeFi 一詞實際上暗示了這一點。
“這就是黑客如此混亂的原因——你不需要了解Solidity或 Merkle Trees 或類似的東西,”通過 Twitter解釋道“samczsu” 。“你所要做的就是找到一個有效的交易,用你的地址找到/替換對方的地址,然后重新廣播它。”
同時,Nomad 預計至少可以取回一些被盜代幣,前提是某些強盜從事保護性盜竊以耗盡資金,以便不太慈善的人可能無法擁有它們。為了與其自我應用的描述“樂觀”保持一致,加密貨幣業務感謝“我們的許多白帽朋友,他們積極行動并保護資金。”