攻擊者獲利約302萬美元,Orion Protocol被攻擊事件分析

事件背景

零時科技區塊鏈安全情報平台監控到消息,北京時間2023年2月3日,BSC鏈與ETH鏈上Orion Protocol受到黑客攻擊,攻擊者獲利約300萬美元,攻擊者地址為0x837962b686fd5a407fb4e5f92e8be86a230484bd,被盜資金已轉移至Tornado.Cash混幣平台。零時科技安全團隊及時對此安全事件進行分析。

漏洞及核心

Orion Protocol是一個交易聚合協議,用戶可以進行代幣交易,兌換以及跨鏈操作等。此處以BSC鏈攻擊交易為例。

攻擊者執行兌換操作,其中路徑1代幣由攻擊者控制。

攻擊者獲利約302萬美元,Orion Protocol被攻擊事件分析

攻擊者獲利約302萬美元,Orion Protocol被攻擊事件分析

在執行第一次兌換後,轉入攻擊者構造的惡意合約中進行代幣轉賬,轉賬函數由攻擊者惡意構造,在惡意構造的轉賬函數中攻擊者將通過閃電貸獲得的191,606 USDT 調用ExchangeWithAtomic合約中depositAsset函數存入合約中,此時修改了assetBalances變量的值,但是在最終轉賬時並沒有執行assetBalances變量的修改。

攻擊者獲利約302萬美元,Orion Protocol被攻擊事件分析

攻擊者獲利約302萬美元,Orion Protocol被攻擊事件分析

計算最終兌換代幣數值是由當前代幣餘額減去執行兌換之前合約對應代幣餘額

攻擊者獲利約302萬美元,Orion Protocol被攻擊事件分析

由於在執行兌換過程中攻擊者已經向合約轉移大筆資金,因此攻擊者兌換出的USDT資金變多

攻擊者獲利約302萬美元,Orion Protocol被攻擊事件分析

兌換前餘額

攻擊者獲利約302萬美元,Orion Protocol被攻擊事件分析

執行兌換操作後餘額

攻擊者在此次兌換中使用1USDC共兌換出191,606 USDT

攻擊者獲利約302萬美元,Orion Protocol被攻擊事件分析

由於攻擊者此前執行了depositAsset函數操作,但是兌換完成時並沒有涉及到此函數中變量,攻擊者仍可以通過調用withdraw函數取出之前通過depositAsset函數存入的資金。

攻擊者獲利約302萬美元,Orion Protocol被攻擊事件分析

資金來源及去向

  • 資金來源

ETH鏈攻擊地址資金來源為Bianace15交易所

攻擊者獲利約302萬美元,Orion Protocol被攻擊事件分析

BSC鏈攻擊地址資金來源為Tornado.Cash混幣平台

攻擊者獲利約302萬美元,Orion Protocol被攻擊事件分析

  • 資金流向

BSC鏈被盜資金通過跨鏈全部轉移至ETH鏈攻擊者地址

攻擊者獲利約302萬美元,Orion Protocol被攻擊事件分析

ETH鏈將被盜資金兌換為ETH共1100 ETH轉移至Tornado.Cash混幣平台

攻擊者獲利約302萬美元,Orion Protocol被攻擊事件分析

總結及建議

此次攻擊是由於ExchangeWithAtomic合約中對於合約內不同函數間的重入未做限定,使得攻擊者能夠通過調用構造的惡意合約實現重入操作,且合約中代幣兌換後轉出資金計算方式只受合約代幣餘額影響,因此攻擊者在執行兌換時通過調用其他函數轉入資金影響合約餘額後將轉入的資金取出實現獲利。

?安全建議

  • 建議對合約中涉及資金轉移函數添加防重入機制保護,避免攻擊者通過控制惡意合約進行攻擊
  • 建議項目方上線前進行多次審計,避免出現審計步驟缺失