慢霧:Orion Protocol被黑根本原因在於合約兌換功能的函數沒有做重入保護

PANews 2月3日消息,慢霧安全團隊發布了Orion Protocol被黑分析,Orion Protocol項目的ETH和BSC鏈上的合約遭到攻擊,攻擊者獲利約302.7萬美元。此次攻擊的根本原因在於合約兌換功能的函數沒有做重入保護,並且兌換後再次更新賬本存款的數值是根據兌換前後合約裡的代幣餘額差值來計算的,導致攻擊者利用假代幣重入了存款函數獲得超過預期的代幣。

具體分析如下:1. 攻擊者首先調用ExchangeWithAtomic合約的depositAsset函數進行存款,存入0.5個USDC代幣為下面的攻擊作準備;2. 攻擊者閃電貸出284.47萬枚USDT代幣,接著調用ExchangeWithAtomic合約的doSwapThroughOrionPool函數兌換代幣,兌換路徑是[USDC -> ATK(攻擊者創建的惡意代幣)-> USDT];3. 因為兌換出來的結果是通過兌換後ExchangeWithAtomic合約裡的USDT代幣餘額減去兌換前該合約裡的USDT代幣餘額(284.47萬枚),但問題就在兌換USDC -> ATK後,會調用ATK代幣的轉賬函數,該函數由攻擊惡意構造會通過攻擊合約調用ExchangeWithAtomic合約的depositAsset函數來將閃電貸來的284.4 萬USDT代幣存入ExchangeWithAtomic合約中。此時攻擊合約在ExchangeWithAtomic合約裡的存款被成功記賬為284.47萬枚並且ExchangeWithAtomic合約裡的USDT代幣餘額為568.9萬枚,使得攻擊者兌換出的USDT代幣的數量被計算為兌換後的568.9萬減去兌換前的284.47萬等於284.47萬;4. 之後兌換後的USDT代幣最後會通過調用庫函數creditUserAssets來更新攻擊合約在ExchangeWithAtomic合約裡的使用的賬本,導致攻擊合約最終在ExchangeWithAtomic合約裡USDT代幣的存款記賬為568.9萬枚;5. 最後攻擊者調用ExchangeWithAtomic合約裡的withdraw函數將USDT提取出來,歸還閃電貸後將剩餘的283.6萬枚USDT代幣換成WETH獲利。攻擊者利用一樣的手法在BSC鏈上的也發起了攻擊,獲利19.1萬美元。

此前今日早些時候消息, Orion Protocol在攻擊事件中損失約300萬美元,官方暫停存款功能並正修復漏洞

分享至:

作者:PA一线

本內容只為提供市場資訊,不構成投資建議。

關注PANews官方賬號,一起穿越牛熊
推薦閱讀
2025-12-18 09:43
2025-12-18 04:23
2025-12-17 08:22
2025-12-17 06:07
2025-12-17 03:58
2025-12-17 03:44

熱門文章

行業要聞
市場熱點
精選讀物

精選專題

App内阅读