損失 215 萬美元!MobiusDAO 事件漏洞分析與被盜資金追蹤

撰文:Beosin

近期,BNB Chain 生態項目 MobiusDAO 遭受攻擊,攻擊者通過項目合約的邏輯漏洞鑄造出大量 MBU 代幣賣出獲利。Beosin 安全團隊對該事件進行了漏洞分析和資金追蹤,並將結果分享如下:

詳細攻擊步驟

(1) 攻擊者首先部署了攻擊合約(0x631adFF068D484Ce531Fb519Cda4042805521641)

,並使用該合約調用了 Mobius 代理合約0x95e92B09b89cF31Fa9F1Eca4109A85F88EB08531 的存款函數,隨後 Mobius 合約鑄造了超過 9.7x10^15 個 MBU 代幣並發送給攻擊合約。

攻擊交易哈希:0x2a65254b41b42f39331a0bcc9f893518d6b106e80d9a476b8ca3816325f4a150

(2) 攻擊合約在收到 MBU 代幣後調用 PancakeSwap 相關合約賣出 MBU 代幣完成獲利。

漏洞分析

Mobius 合約的存款函數在收到存款後會鑄造等量的 MBU 代幣發送給存款者。在該函數中,每當用戶存入 WBNB 時,該函數會獲取 BNB 的價格,以計算要鑄造並轉帳的 MBU 代幣數量。

BNB 的價格來自 getBNBPriceInUSDT 函數,該函數返回精確到 18 位小數的價格。如上圖所示,返回的價格約爲 656 美元。

由於 Mobius 的邏輯合約並未開源,通過反編譯我們發現,漏洞出現在函數返回 18 位小數的結果時,合約再次將該值乘以 10^18,從而產生了相比正常結果高了 10^18 倍的 MBU 代幣數量。

被盜資金追蹤

Beosin Trace 對被盜資金進行追蹤發現:被盜資金被攻擊者轉換成約 215 萬枚 USDT 代幣,其中 135萬枚 USDT 兌換成BNB後存入 Tornado Cash,剩餘 80 萬枚 USDT 通過跨鏈兌換成 Ethereum 鏈的 ETH,隨後存入 Tornado Cash。Beosin Trace 已將黑客相關地址加入黑地址庫,後續將持續追蹤。

據 Beosin Trace 分析,所有被盜資金已存入Tornado Cash

總結

本次攻擊的核心在於攻擊者利用項目合約的一個算數錯誤,鑄造了巨量的代幣賣出獲利。這本是一個非常容易發現的代碼錯誤,但 Mobius 項目方此前沒有對合約進行詳盡的代碼測試發現該錯誤,也沒有進行審計,導致了超過 215 萬美元的損失。Beosin 安全團隊建議項目方應當對項目的合約代碼加強審計與安全測試,從而避免類似情況的發生。

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 留言
  • 分享
留言
0/400
暫無留言
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)