# OrionProtocol 遭遇重入攻擊事件分析2023年2月2日下午,以太坊和幣安智能鏈上的OrionProtocol因合約漏洞遭受重入攻擊,損失約290萬美元,其中包括以太坊上2,844,766 USDT和幣安智能鏈上191,606 BUSD。## 攻擊過程分析攻擊者首先創建了一個Token合約,並進行了相關的轉移和授權操作,爲後續攻擊做好準備。隨後,攻擊者通過UNI-V2的swap方法借款,並調用ExchangeWithAtomic合約的swapThroughOrionPool方法進行代幣兌換。兌換路徑設置爲USDC → 攻擊者創建的Token → USDT。在兌換過程中,由於攻擊者創建的Token合約中包含回調功能,導致在ExchangeWithAtomic.swapThroughOrionPool方法執行時,通過Token.Transfer繼續回調ExchangeWithAtomic.depositAsset方法,造成重入攻擊。這使得存款金額不斷累加,最終攻擊者通過取款操作完成獲利。## 資金流向攻擊者的初始資金來自某交易平台的熱錢包帳戶。獲利的1,651枚ETH中,657.5枚仍留在攻擊者的錢包地址,其餘已通過混幣服務進行轉移。## 漏洞分析漏洞的核心問題出現在doSwapThroughOrionPool函數中。該函數調用了_doSwapTokens函數,在該函數中,代幣轉帳操作發生在curBalance更新之前。攻擊者利用自定義Token的transfer函數中添加的回調功能,在curBalance更新前再次調用depositAsset函數,導致curBalance更新錯誤。最終,攻擊者在償還閃電貸後,通過調用withdraw函數提取資金完成攻擊。## 防範建議1. 合約設計時應考慮多種Token和兌換路徑可能帶來的潛在風險。2. 遵循"先判斷,後更新變量,最後進行外部調用"的編碼規範(Checks-Effects-Interactions模式),可以有效提高合約安全性。3. 在實現代幣兌換功能時,需要特別注意重入攻擊的風險,可以考慮使用重入鎖等機制進行防護。4. 對於涉及資金操作的關鍵函數,建議進行全面的安全審計和測試,包括各種邊界情況和異常場景的模擬。5. 定期進行合約安全檢查,及時更新和修復潛在的漏洞。通過採取這些措施,可以大大降低智能合約遭受攻擊的風險,提高項目的整體安全性。在Web3生態系統中,安全始終是最重要的考慮因素之一。
OrionProtocol遭重入攻擊 損失290萬美元加密資產
OrionProtocol 遭遇重入攻擊事件分析
2023年2月2日下午,以太坊和幣安智能鏈上的OrionProtocol因合約漏洞遭受重入攻擊,損失約290萬美元,其中包括以太坊上2,844,766 USDT和幣安智能鏈上191,606 BUSD。
攻擊過程分析
攻擊者首先創建了一個Token合約,並進行了相關的轉移和授權操作,爲後續攻擊做好準備。隨後,攻擊者通過UNI-V2的swap方法借款,並調用ExchangeWithAtomic合約的swapThroughOrionPool方法進行代幣兌換。兌換路徑設置爲USDC → 攻擊者創建的Token → USDT。
在兌換過程中,由於攻擊者創建的Token合約中包含回調功能,導致在ExchangeWithAtomic.swapThroughOrionPool方法執行時,通過Token.Transfer繼續回調ExchangeWithAtomic.depositAsset方法,造成重入攻擊。這使得存款金額不斷累加,最終攻擊者通過取款操作完成獲利。
資金流向
攻擊者的初始資金來自某交易平台的熱錢包帳戶。獲利的1,651枚ETH中,657.5枚仍留在攻擊者的錢包地址,其餘已通過混幣服務進行轉移。
漏洞分析
漏洞的核心問題出現在doSwapThroughOrionPool函數中。該函數調用了_doSwapTokens函數,在該函數中,代幣轉帳操作發生在curBalance更新之前。攻擊者利用自定義Token的transfer函數中添加的回調功能,在curBalance更新前再次調用depositAsset函數,導致curBalance更新錯誤。最終,攻擊者在償還閃電貸後,通過調用withdraw函數提取資金完成攻擊。
防範建議
合約設計時應考慮多種Token和兌換路徑可能帶來的潛在風險。
遵循"先判斷,後更新變量,最後進行外部調用"的編碼規範(Checks-Effects-Interactions模式),可以有效提高合約安全性。
在實現代幣兌換功能時,需要特別注意重入攻擊的風險,可以考慮使用重入鎖等機制進行防護。
對於涉及資金操作的關鍵函數,建議進行全面的安全審計和測試,包括各種邊界情況和異常場景的模擬。
定期進行合約安全檢查,及時更新和修復潛在的漏洞。
通過採取這些措施,可以大大降低智能合約遭受攻擊的風險,提高項目的整體安全性。在Web3生態系統中,安全始終是最重要的考慮因素之一。