OrionProtocol遭重入攻擊 損失290萬美元 安全建議解析

robot
摘要生成中

OrionProtocol遭遇重入攻擊事件分析

2023年2月2日,以太坊和幣安智能鏈上的OrionProtocol因合約漏洞遭受重入攻擊,總計損失約290萬美元,其中包括以太坊上2,844,766 USDT和BSC上191,606 BUSD。

攻擊過程分析

攻擊者首先部署了一個特制的Token合約,並對其進行了轉移和授權操作,爲後續攻擊做準備。隨後,攻擊者通過某DEX的swap方法進行借貸,並調用ExchangeWithAtomic.swapThroughOrionPool方法進行代幣兌換。兌換路徑設置爲USDC → 攻擊者Token → USDT。

在ExchangeWithAtomic.swapThroughOrionPool方法執行過程中,由於攻擊者Token合約中存在回調函數,導致在Token.Transfer過程中再次調用ExchangeWithAtomic.depositAsset方法,從而實現了重入攻擊。這使得存款金額被多次累加,最終攻擊者通過取款操作獲取超額利潤。

OrionProtocol 重入攻擊分析附PoC

資金流向

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

OrionProtocol 重入攻擊分析附PoC

漏洞分析

核心漏洞存在於doSwapThroughOrionPool和_doSwapTokens函數中。關鍵問題在於,合約在進行代幣轉帳後才更新curBalance變量,這爲重入攻擊創造了條件。攻擊者通過在自定義Token的transfer函數中添加回調邏輯,使其在轉帳過程中再次調用depositAsset函數,導致curBalance被錯誤更新。

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

漏洞復現

研究人員提供了部分POC代碼,模擬了攻擊過程。測試結果顯示,攻擊者成功利用漏洞獲取了額外的USDT。

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

安全建議

  1. 合約開發時應嚴格遵循"檢查-生效-交互"(Checks-Effects-Interactions)模式,即先進行狀態檢查,然後更新合約狀態,最後才與外部合約交互。

  2. 在實現代幣兌換功能時,需要考慮多種Token和兌換路徑可能帶來的安全風險。

  3. 對於涉及資金操作的關鍵函數,應實施重入鎖或使用OpenZeppelin的ReentrancyGuard等安全庫。

  4. 定期進行代碼審計和安全評估,及時發現並修復潛在漏洞。

  5. 考慮引入交易金額限制或時間鎖等機制,降低單次攻擊可能造成的損失。

通過採取這些措施,項目方可以有效提高智能合約的安全性,降低遭受類似攻擊的風險。

TOKEN17.65%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 3
  • 分享
留言
0/400
合约自由人vip
· 07-29 23:53
又是重入攻击 烦死了
回復0
GasFeeCryvip
· 07-29 23:52
又白给黑客送钱咯
回復0
JustHereForAirdropsvip
· 07-29 23:40
又是290w没了 悲
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)