奧推網

選單
科技

...被“掏空”!駭客牽頭,路人“趁火打劫”,一切僅因一個低階致命漏洞

整理 | 鄭麗媛

出品 | CSDN(ID:CSDNnews)

本週二,跨鏈通訊協議 Nomad 被曝遭遇駭客攻擊,導致其代幣橋內的 1。9 億美元資金幾乎全被“掏空”:據 Defil Lama 統計資料顯示,原本 Nomad 的總價值鎖定(TVL)為 1。9 億美元,但幾個小時後其官方賬戶中只剩下了 651。54 美元。

儘管週二一早,Nomad 官方就發推特表示已得知此事,並稱目前正在調查,但這起事件還是在 Web3 領域引起了巨大爭議:

Terra 研究員 FatMan 認為本次 Nomad 遭遇的攻擊是“真正的加密市場中首次發生的去中心化搶劫”。

Paradigm 研究合夥人兼安全主管 Samczsun 也發推表示:“剛剛發生的 Nomad 事件是我在 Web3 中見過的最混亂的駭客攻擊之一。”

更令人意外的是,最終導致了這 1。9 億美元損失的源頭,竟然只是一個“低階漏洞”。

大量資產從 Nomad 代幣橋轉移出去

具體來說,Nomad 是以太坊、Avalanche、Milkomeda 和 Moonbeam 之間跨鏈轉移的代幣橋樑,特點在於不依賴大量外部方來驗證跨鏈通訊,可透過一種名為“optimistic”機制,讓使用者可以安全地傳送訊息和橋接資產。

最初注意到不對勁的是一名推特使用者 @spreekaway:“Nomad 代幣橋變得很‘崎嶇’???看起來非常可疑。”從他提供的截圖來看,彼時正有大量資產從 Nomad 代幣橋轉移出去,這顯然不太尋常。

對此,Paradigm 研究合夥人兼安全主管 Samczsun 的第一反應:可能是 Token 小數點的配置有誤。從他的視角來看,當時跨鏈橋似乎正在進行一個 “傳送 0。01 WBTC,返還 100 WBTC”的促銷活動。

最初 Samczsun 是不信的,但在 Moonbeam 上進行了一些手動挖掘後,他確認了這一事實:“雖然我從 Moonbeam 只轉出了 0。01 WBTC,但不知道為什麼以太坊上卻收到了 100 WBTC。”也就是說,這不併是 Token 小數點的錯誤配置。

但與此同時,Samczsun 發現了更糟糕的一點:在 WBTC 中橋接的交易實際上並沒有“證明(prove)”這個步驟,而是直接進行“process”操作。這明顯不符合邏輯。

Replica 合約中存在致命錯誤

基於此,Samczsun 總結出有兩種可能性:要麼是在先前的區塊中單獨提交了證明,要麼就是 Replica 合約中存在嚴重錯誤。然而,沒有任何跡象表明最近有什麼資訊被提前證明了,這也就只剩下了一種可能性,即 Replica 合約中存在致命錯誤。

在快速瀏覽程式碼後,Samczsun 推測出了問題所在。在進行 process 操作時,使用者提交的訊息必須來自可接受的根(會在 prove 中被設定),其中第 185 行的“acceptableRoot”就是用來檢查根是否被證明或已被確認。一般在進行 Replica 合約部署初始化時,會先把可信根設定為 0,再將其改為非 0 資料的新根,同時將舊根設為失效——而 Samczsun 懷疑,可能舊根的“0”還處於生效狀態。

這個想法很好驗證,Samczsun 用 0x00 來檢查合同是否會接受這個根,結果居然真的通過了……

“事實證明,在升級期間,Nomad 團隊將可信根初始化為 0x00。說白了,使用 0 值作為初始化值是一種常見的做法。不幸的是,在這種情況下,它也有一個很小的副作用,即會自動驗證每一條訊息。”

這也就意味著,攻擊者可以直接構造任意訊息,而這些訊息都可以正常執行。這一漏洞的性質決定了本次駭客事件的規模,正如 Samczsun 所說:“這就是此次事件如此混亂的原因——你甚至不需要知道 Solidity 或默克爾樹(Merkle Trees)這類技術知識,只需找到一個有效交易,用你的地址替換原本的地址,然後再推廣出去。”

主動返還不當獲利,可獲得 20% 的賞金?闢謠!

綜上,總體而言本次攻擊是由於 Nomad 橋 Replica 合約在初始化時將可信根設定為 0x0,但在進行可信根修改時並未令舊根失效,導致攻擊者可以構造任意訊息對 Nomad 橋進行資金竊取——更重要的是,由於不需要什麼專業技術,攻擊者中不僅有駭客,也有好奇嘗試的許多“路人”使用者。

文章開頭提到 Terra 研究員 FatMan 對這場攻擊的評價也正因如此:“在公共 Discord 伺服器上彈出的一條訊息稱,任意一個人都能從 Nomad 橋上搶 3 千到 2 萬美元:所有人要做的就是複製第一個駭客的交易並更改地址,然後點選透過 Etherscan 傳送即可。”

針對這一事件,Nomad 團隊事後表示目前調查正在進行中,已聯絡區塊鏈情報和取證的專業公司協助,也已通知執法部門儘快處理這一情況,及時提供最新資訊。

與此同時,有未知來源的訊息稱 Nomad 在鏈上呼籲攻擊者返還資金:“如果你願意將不當獲利返至 nomadexploit。eth 則不會對你採取進一步行動,且可獲得 20% 的賞金,按照白帽處理。”

但很快 Nomad 在官方推特闢謠稱:“我們尚未提供任何返還被盜跨鏈資金的說明。請忽略除 Nomad 官方渠道以外的所有渠道的訊息。”並於週三給出了明確資金返還地址:“請將資金髮送至以下以太坊錢包地址:0x94A84433101A10aEda762968f6995c”

因本次事件可能牽扯到一部分僅因好奇而意外攻擊了 Nomad 的使用者,部分人主動返還了不當獲利。據區塊律動 BlockBeats 報道,本週三派盾在其社交平臺表示,已檢測到約 900 萬美元 Nomad 被盜資金已被歸還至 Nomad 提供的資金回收地址。

參考連結:

https://www。nftculture。com/nft-news/nomad-got-drained-for-over-150m-in-one-of-the-most-chaotic-hacks-seen/

https://defillama。com/protocol/nomad

— 活動推薦 —

不止七夕,讓《新程式設計師》陪伴你每個朝夕!凡在七夕當日訂閱《新程式設計師》的朋友都將獲得CSDN贈送的定製馬克杯一個!

掃描下方二維碼立即訂閱