压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

FEGtoken遭受攻擊,損失超130萬美元事件分析

0x1 事件背景

零時科技區塊鏈安全情報平臺監控到消息,北京時間 2022年5月16日 BNB Chain 和 Ethereum 鏈上 FEGtoken 遭到閃電貸攻擊。損失資金價值超過130萬美元,零時科技安全團隊及時對此安全事件進行分析。

0x2 攻擊者信息

  • 攻擊者錢包:

0x73b359d5da488EB2E97990619976F2f004e9fF7C

  • 攻擊者合約:

0x9a843bb125a3c03f496cb44653741f2cef82f445

  • 攻擊交易:

https://etherscan.io/tx/0x1e769a59a5a9dabec0cb7f21a3e346f55ae1972bb18ae5eeacdaa0bc3424abd2(Ethereum)

https://bscscan.com/tx/0x77cf448ceaf8f66e06d1537ef83218725670d3a509583ea0d161533fda56c063(BNB?Chain )

  • FEGexPRO合約:

https://etherscan.io/address/0xf2bda964ec2D2fcB1610c886eD4831bf58f64948#code(Ethereum)

https://bscscan.com/address/0x818e2013dd7d9bf4547aaabf6b617c1262578bc7#code(BNB?Chain )

0x3 攻擊分析

通過分析攻擊者在BNB Chain和 Ethereum 兩條鏈上的多筆攻擊交易,每筆攻擊交易流程大致如下:

1.攻擊者通過閃電貸或者已獲利的資金作為攻擊交易的初始資金。

2.將獲取的一部分初始資金質押后,從FEG Wrapped BNB合約中獲取 fWrapped 代幣,例如BNB質押獲取fBNB。

3.攻擊者通過攻擊合約繼續創建10個新的合約地址,為后續調用做準備。

4.攻擊者將獲取的 fWrapped 代幣通過 FEGexPRO.depositInternal 進行存款,此時攻擊者在 FEGexPRO 合約有存款資金。

5.攻擊者將自己創建的10個合約地址逐一作為path傳入“

FEGexPRO.swapToSwap方法,通過FEGexPRO.depositInternal 和FEGexPRO.swapToSwap多次循環調用,最終10個合約均獲得轉移合約資金權限。

FEGexPRO.swapToSwap

FEGexPRO.depositInternal

6.攻擊者調用轉賬方法獲取授權給合約資金,成功獲利(部分交易歸還閃電貸)。

0x4 漏洞細節

通過攻擊交易流程可以發現,攻擊者成功獲利的主要操作是通過上述步驟五循環調用FEGexPRO.depositInternal和FEGexPRO.swapToSwap 兩個方法獲取合約的授權資金。這里跟進以上兩個方法:

FEGexPRO.swapToSwap 方法

通過之前的交易流程可以明確,攻擊者通過一步正常調用 depositInternal 方法存款后,調用swapToSwap方法傳入的path參數為攻擊者創建的合約地址。由于path正常情況下為兌換路徑,swapToSwap方法邏輯中會給當前路徑進行approve授權操作,方便后續兌換資金轉移。但由于攻擊者傳入的path為自己創建的合約地址,所以這里swapToSwap方法邏輯中也會給攻擊者傳入的合約地址授權,但在后續path調用中,該資金并未轉移,也就是用戶余額減少了,但該合約地址中資金并未減少。(此時攻擊者并未獲利)

隨后攻擊者繼續調用depositInternal 方法,繼續跟進:

FEGexPRO.depositInternal 方法

該方法中,傳入的可控值只有amt,也就是存款金額。由于第一次正常調用depositInternal方法已經進行了存款,并且攻擊者調用swapToSwap方法也給自己的合約進行了授權操作,唯一與正常邏輯不符合的是,FEGexPRO合約地址的余額未及時減除,此步驟正好給了攻擊者可乘之機。

當攻擊者調用swapToSwap方法后,FEGexPRO合約余額未減除時,攻擊者繼續調用depositInternal方法進行存款,由于存款時會先獲得之前的代幣余額,之后進行轉賬,隨后獲取FEGexPRO合約地址余額,所以當攻擊者此時轉入很小的資金,并不會對合約資金有大的影響,但由于之前的FEGexPRO合約地址余額未通過swapToSwap方法減除,所以這里攻擊者依然能夠獲取與第一次等量的存款。

之后攻擊者通過swapToSwap與depositInternal循環調用,獲取了FEGexPRO合約的所有資金。

0x5 資金來源及去向

BNB Chain 和 Ethereum 鏈上攻擊者資金來源均來自 Tornado.Cash 混幣平臺,數量分別為1枚 ETH 和 1 枚 BNB。目前兩條鏈上獲利資金 144.8 枚ETH 和 3278.1 枚BNB 均未轉移。

0x6 總結

通過此次攻擊事件來看,FEGexPRO.swapToSwap合約未對傳入的path路徑參數進行嚴格校驗,導致攻擊者可以通過多個攻擊合約多次循環授權,取走合約中所有資金。對于該合約代碼的校驗缺失風險,完全可以通過代碼安全審計避免風險發生。

0x7 安全建議

  • 對方法傳參應進行嚴格控制,避免發現參數可控導致資產損失;
  • 智能合約上線前應進行全面安全審計,對智能合約安全風險進行全面排查。

來源:安全客

上一篇:有關2021年網絡黑天鵝事件的誤解

下一篇:金融“云化”時代,如何筑牢云原生基石