OrionProtocol遭重入攻擊 損失290萬美元USDT和BUSD

robot
摘要生成中

OrionProtocol 遭受重入攻擊事件分析

2023年2月2日下午,Ethereum和Binance鏈上的OrionProtocol因合約漏洞遭到重入攻擊,造成約290萬美元的損失。具體損失包括Ethereum上的2,844,766 USDT和Binance鏈上的191,606 BUSD。

攻擊過程分析

攻擊者首先創建了一個Token合約,並對其進行了轉移和授權操作,爲後續攻擊做準備。隨後,攻擊者通過UNI-V2的swap方法進行借款,並調用ExchangeWithAtomic合約的swapThroughOrionPool方法進行代幣兌換。

兌換路徑設置爲[USDC, 攻擊者創建的Token, USDT]。在兌換過程中,由於攻擊者創建的Token合約中存在回調功能,攻擊者得以通過Token的Transfer方法繼續回調ExchangeWithAtomic合約的depositAsset方法,從而實現重入攻擊,使存款金額不斷累加。最終,攻擊者通過取款操作完成獲利。

OrionProtocol 重入攻擊分析附PoC

漏洞分析

漏洞的核心在於ExchangeWithAtomic合約中的doSwapThroughOrionPool函數。該函數在執行_doSwapTokens時,存在以下問題:

  1. 轉帳操作後才更新curBalance變量。
  2. 未遵循"檢查-效果-交互"(Checks-Effects-Interactions)模式。

攻擊者利用這一漏洞,在僞造的Token合約的transfer函數中添加了回調功能,使其在轉帳時調用depositAsset函數。這導致curBalance變量被錯誤更新,攻擊者得以在償還閃電貸後通過withdraw函數提取超額資金。

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

資金流向

攻擊者的初始資金來自某交易平台的熱錢包帳戶。在獲利的1,651枚ETH中,657.5枚仍留在攻擊者的錢包地址中,其餘部分已通過混幣服務進行轉移。

防範建議

爲避免類似攻擊,項目方應注意以下幾點:

  1. 合約設計時需考慮多種Token和兌換路徑可能帶來的意外情況。
  2. 嚴格遵循"檢查-效果-交互"的編碼規範,確保先進行判斷,再更新狀態變量,最後才執行外部調用。
  3. 對於涉及資金轉移的關鍵操作,實施更嚴格的安全檢查和限制。
  4. 定期進行合約安全審計,及時發現並修復潛在漏洞。

本次事件再次提醒我們,在智能合約開發中,安全性至關重要。項目方應當始終保持警惕,採取多重防護措施,以最大程度降低合約風險。

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 4
  • 轉發
  • 分享
留言
0/400
OptionWhisperervip
· 18小時前
又搞没了
回復0
Crypto金矿vip
· 18小時前
漏洞即资产负收益率
回復0
RektButSmilingvip
· 18小時前
又漏洞咯
回復0
gas费省钱大师vip
· 18小時前
又是重入攻击?
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)