OrionProtocol遭重入攻擊 損失約290萬美元

OrionProtocol遭遇重入攻擊事件分析

2023年2月2日15:40:20 UTC,以太坊和幣安智能鏈上的OrionProtocol因合約漏洞遭受重入攻擊。攻擊者從以太坊網路獲利2,844,766 USDT,從幣安智能鏈獲利191,606 BUSD,總損失約290萬美元。

攻擊過程分析

攻擊者首先部署了一個自定義Token合約,並進行了一系列準備工作。隨後,攻擊者通過某DEX的swap函數借入資金,並調用OrionProtocol的ExchangeWithAtomic.swapThroughOrionPool方法進行代幣兌換。兌換路徑包含了攻擊者創建的Token合約地址,這爲後續的回調攻擊埋下伏筆。

在兌換過程中,由於攻擊者的Token合約中包含回調邏輯,每次轉帳都會觸發對ExchangeWithAtomic.depositAsset方法的重入調用。這導致存款金額被多次累加,最終攻擊者通過提款操作獲取超額利潤。

OrionProtocol 重入攻擊分析附PoC

資金流向

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

OrionProtocol 重入攻擊分析附PoC

漏洞分析

漏洞的核心在於ExchangeWithAtomic合約的doSwapThroughOrionPool和_doSwapTokens函數。這些函數在執行代幣轉帳後才更新curBalance變量,給了攻擊者利用重入攻擊的機會。攻擊者通過在自定義Token的transfer函數中添加回調邏輯,導致curBalance被錯誤更新,從而在償還閃電貸後仍能提取額外資金。

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

攻擊復現

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

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

安全建議

針對此類攻擊,建議項目方:

  1. 在合約中實現代幣兌換功能時,需考慮各種Token類型和兌換路徑可能帶來的安全風險。
  2. 嚴格遵循"檢查-生效-交互"(Checks-Effects-Interactions)的編碼模式,即先進行條件檢查,再更新狀態變量,最後執行外部調用。
  3. 在更新關鍵狀態變量前使用重入鎖或類似機制防止重入攻擊。
  4. 定期進行代碼審計和安全測試,及時發現並修復潛在漏洞。

本次事件再次凸顯了智能合約安全的重要性。項目方應該持續關注安全問題,採取全面的防護措施,以確保用戶資產安全和項目的長期穩定發展。

TOKEN-6.71%
ETH-0.31%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 7
  • 轉發
  • 分享
留言
0/400
rug_connoisseurvip
· 50分鐘前
又一个智能合约翻车了
回復0
薛定谔的Gas费vip
· 10小時前
又被薅秃了谁
回復0
DAO会议翘课生vip
· 10小時前
又一个合约被薅啦
回復0
主网延期通知书vip
· 10小時前
又一个进统计数据库的案例了,实在不该。
回復0
GateUser-5854de8bvip
· 10小時前
又见合约被偷...
回復0
MEV_Whisperervip
· 10小時前
又是重入 溜了溜了
回復0
SignatureVerifiervip
· 10小時前
*sigh* 又一个教科书级的重入失败。统计上看,由于缺乏足够的验证检查,这是不可避免的。说实话,我早就预见到了这一点。
查看原文回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)