OrionProtocol遭重入攻擊 290萬美元資金被盜

robot
摘要生成中

OrionProtocol遭受重入攻擊分析

2023年2月2日下午,以太坊和幣安智能鏈上的OrionProtocol合約因存在漏洞遭到重入攻擊。攻擊者在以太坊鏈上獲利2,844,766 USDT,在幣安智能鏈上獲利191,606 BUSD,總計約290萬美元。

OrionProtocol 重入攻擊分析附PoC

攻擊過程分析

攻擊者首先部署了一個自定義Token合約,並進行了相關的準備工作。隨後,攻擊者通過某DEX的swap功能進行借貸,並調用OrionProtocol的swapThroughOrionPool方法進行代幣兌換。兌換路徑中包含了攻擊者創建的Token合約地址,這爲後續的回調攻擊做好了鋪墊。

在執行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

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

OrionProtocol 重入攻擊分析附PoC

防範建議

爲避免類似攻擊,項目方在設計合約時應注意以下幾點:

  1. 實現代幣兌換功能時,需要全面考慮各種Token類型和兌換路徑可能帶來的安全隱患。

  2. 嚴格遵循"檢查-生效-交互"(Checks-Effects-Interactions)的編碼規範,即先進行狀態檢查,再更新合約狀態,最後才執行外部調用。

  3. 在關鍵操作中實施重入鎖,防止重入攻擊的發生。

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

  5. 考慮引入延遲提款機制,爲異常交易提供人工幹預的機會。

通過採取這些措施,可以大大提高智能合約的安全性,降低被攻擊的風險。在Web3生態系統中,安全始終是首要考慮的因素。

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 8
  • 分享
留言
0/400
LidoStakeAddictvip
· 07-17 03:22
又一猪了属于是
回復0
NervousFingersvip
· 07-14 05:42
又一项目被薅羊毛啊...
回復0
TokenUnlockervip
· 07-14 04:00
又一个未锁重入漏洞?
回復0
gas费省钱大师vip
· 07-14 03:59
当前技术也不咋滴啊
回復0
PanicSeller69vip
· 07-14 03:58
又炸了啊好家伙
回復0
调仓异常小助手vip
· 07-14 03:37
合约漏洞又一个受害者...
回復0
SerumSqueezervip
· 07-14 03:36
又漏又洞的 第几回了这是
回復0
Fork_Tonguevip
· 07-14 03:33
又是重入攻击,这些项目还不吸取教训?
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)