項目方在合約部署前,需要考慮配置是否合理。部署後,應測試相關功能,是否存在被利用的風險,並且聯繫審計公司查看初始的參數是否合理。

原用標題:損失約 1.5 億,黑客點火,多人 “趁火打劫”——Nomad 被攻擊事件分析

封面: Photo by Moritz Erken on Unsplash

北京時間 8 月 2 日,Beosin 鏈必應-區塊鏈安全態勢感知平台輿情監測顯示,跨鏈通訊協議 Nomad 遭遇攻擊,黑客獲利約 1.5 億美元。截止發稿前,根據 DeFi Llama 數據顯示,Nomad 代幣橋中只剩下約 5900 美元左右。

圖片

關於本次攻擊事件的來龍去脈,Beosin 安全團隊第一時間進行了分析。

加密市場中首次發生的去中心化搶劫?

首先,我們先來認識本次故事主角—— Nomad。

Nomad 自稱能提供安全的互操作性解決方案,旨在降低成本並提高跨鏈消息傳遞的安全性,與基於驗證者的跨鏈橋不同,Nomad 不依賴大量外部方來驗證跨鏈通信,而是通過利用一種 optimistic 機制,讓用戶可以安全地發送消息和橋接資產,並保證任何觀看的人都可以標記欺詐並保護系統。

而在 4 月 13 日,他們也以 2.25 億美元估值完成高達 2200 萬美元的種子輪融資,領投方為 Polychain。對於一家初創項目而言,數千萬美元種子輪融足可謂贏在起跑線上,但是本次攻擊之後,不知道項目方會如何處理與 “自救”。

Nomad 官方推特表示,已得知此事,目前正在調查。

圖片

關於本次事件,在 Web3 領域,卻引起了爭議。

Terra 研究員 FatMan 在推特上對 Nomad 遭遇攻擊事件發表評論稱:“在公共 Discord 服務器上彈出的一條消息稱,任意一個人都能從 Nomad 橋上搶了 3 千到 2 萬美元:所有人要做的就是複制第一個黑客的交易並更改地址,然後點擊通過 Etherscan 發送。這是在真正的加密市場中首次發生的去中心化搶劫。” 

圖片

事實的確如此。

根據 Odaily 星球日報的報導,在第一個黑客盜竊完成後,這條「成功」經驗也在加密社區瘋傳,被更多用戶模仿,趁火打劫。跨鏈通訊協議 Nomad 的資產被洗劫一空。

圖片

可能是因為過於心急,一些用戶忘記使用馬甲偽裝,直接使用了自己的常用 ENS 域名,暴露無遺(這可能給 Nomad 後續追贓減輕了一定的負擔)。目前已經有用戶開始自發退款,以求避免被起訴。

圖片

項目方在部署合約時犯了什麼錯導致被攻擊?

本次攻擊主要是項目方在部署合約時,把零 (0x000000….) 的 confirmAt 設置為 1,導致任意一個未使用的_message 都可以通過判斷,並從合約中提取出對應資產。技術分析如下:

被攻擊合約

0x5D94309E5a0090b165FA4181519701637B6DAEBA (存在漏洞利用的合約)

0x88A69B4E698A4B090DF6CF5Bd7B2D47325Ad30A3(遭受損失的金庫合約)

由於攻擊交易過多,下面依靠其中一筆攻擊交易分析為例進行闡述;(0x87ba810b530e2d76062b9088bc351a62c184b39ce60e0a3605150df0a49e51d0)

圖片
攻擊的交易截圖

1. 通過交易分析,發現攻擊者是通過調用 (0x5D9430) 合約中的 process 函數提取(0x88A69)合約中的資金。

圖片
攻擊細節截圖

2. 跟進 process 函數中,可以看到合約對_messageHash 進行了判斷, 當輸入的 messages[_messageHash] 為 0x000000…. 時,返回值卻是 true。

圖片
攻擊細節截圖

3. 然後跟進 acceptableRoot 函數,發現_root 的值為零 (0x000000….) 時, 而 confirmAt[_root] 等於 1,導致判斷恆成立,從而攻擊者可以提取合約中的資金。

圖片
攻擊細節截圖
圖片
  攻擊細節截圖

4. 後續通過查看交易,發現合約在部署時,就已經初始零 (0x000000….) 的 confirmAt 為 1, 交易可見(0x99662dacfb4b963479b159fc43c2b4d048562104fe154a4d0c2519ada72e50bf)

圖片
攻擊細節截圖
圖片
攻擊細節截圖

項目方還能找回被盜資金嗎?

針對跨鏈代幣橋攻擊導致損失一事,Nomad 團隊表示,“調查正在進行中,已經聯繫區塊鏈情報和取證方面的主要公司協助。我們已經通知執法部門,並將夜以繼日地處理這一情況,及時提供最新信息。我們的目標是識別相關賬戶,並追踪和追回資金。”

目前,Beosin 安全團隊正在使用鏈必追平台對被盜資金地址進行監控和追踪分析。

總結:合約部署需要注意哪些問題?

針對本次事件,Beosin 安全團隊建議:項目方在合約部署前,需要考慮配置是否合理。部署後,應測試相關功能,是否存在被利用的風險,並且聯繫審計公司查看初始的參數是否合理。

免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。本文內容僅用於信息分享,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。