OrionProtocol 重入攻擊分析附Poc
事件背景
根據NUMEN鏈上監控顯示,Feb-02-2023 03:40:20 PM +UTC,Ethereum和Binance鏈上OrionProtocol以為合約漏洞遭到重入攻擊,損失1,651枚ETH(Ethereum)和191,030枚USD(Binance),價值約290萬美元。
Ethereum鏈過程分析:
攻擊者地址:0x837962b686fd5a407fb4e5f92e8be86a230484bd
攻擊者合約:0x5061f7e6dfc1a867d945d0ec39ea2a33f772380a
攻擊交易:0xa6f63fcb6bec8818864d96a5b1bb19e8bd85ee37b2cc916412e720988440b2aa
攻擊分析
攻擊者首先創建Token合約(0x64acd987a8603eeaf1ee8e87addd512908599aec),並對Token進行轉移及授權,為後續攻擊做准備。
攻擊者通過UNI-V2.swap方法借款並調用ExchangeWithAtomic.swapThroughOrionPool方法進行代幣兌換,兌換路徑為
path=[USDC, 0x64acd987a8603eeaf1ee8e87addd512908599aec,USDT]
路徑0x64ac…0aec是攻擊者創建的Token合約,攻擊者將使用該合約進行回調。
調用ExchangeWithAtomic.swapThroughOrionPool方法兌換時,由於攻擊者創建的Token合約存在回調,所以攻擊者通過Token.Transfer繼續回調ExchangeWithAtomic.depositAsset進行重入讓存款金額累加,隨後取款完成獲利。
資金流向
黑客初始資金來自於幣安熱錢包账戶,獲利的1651枚ETH其中還657.5枚還留在錢包地址中,其余的已經通過Tornado.Cash進行轉移。
漏洞核心
關鍵問題在doSwapThroughOrionPool函數
合約地址:https://etherscan.io/address/0x420a50a62b17c18b36c64478784536ba980feac8#code
然後跟進到_doSwapTokens函數。
看到轉账發生之後更新curBalance,所以在faketoken的transfer新增一個回調功能,回調代碼就是調用depositAsset函數,所以導致curBalance錯誤更新,然後攻擊者在還完閃電貸之後調用withdraw提走資金 。
攻擊復現
部分POC代碼:
測試結果
和調用棧結果一致。
完整poc鏈接:
https://github.com/numencyber/SmartContractHack_PoC/tree/main/OrionProtocolHack
總結
NUMEN實驗室提醒項目方,合約存在兌換功能時,需要考慮多種Token以及多種兌換路徑出現的意外情況,並且對於合約代碼邏輯遵循先判斷,後寫入變量,再進行外部調用的編碼規範(Checks-Effects-Interactions)會使項目更加安全穩定。保障合約風險盡可能被消除在鏈下,NUMEN專注於為web3生態安全保駕護航。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
XRP 漲至 7.5 美元?分析師告訴 XRP 大軍為純粹的煙火做好准備!
加密貨幣分析師 EGRAG 表示,XRP 即將迎來關鍵時刻,價格可能大幅上漲,這取決於能否突破關鍵...
今晚ETH迎來暴漲時代 op、arb、metis等以太坊二層項目能否跑出百倍幣?
北京時間7月23日晚上美股开盤後 ETH 的ETF开始交易。ETH的裏程碑啊,新的時代开啓。突破前...
Mt Gox 轉移 28 億美元比特幣 加密貨幣下跌 ETH ETF 提前發行
2014 年倒閉的臭名昭著的比特幣交易所 Mt Gox 已向債權人轉移了大量比特幣 (BTC),作...
Numen Cyber
文章數量
17粉絲數
0