MO - 單一功能的雙重弱點

本文為機器翻譯
展示原文

OPTIMISTIC 中一個正在運行的項目(主代幣名為 MO)於 2024 年 3 月 14 日被利用,損失約 41.3 萬美元。被利用的合約在函數中存在兩個弱點,攻擊者可從 Loan 和 Pair 合約中竊取USDT 。

概述

攻擊者: https://optimistic.etherscan.io/address/0x4e2c6096985e0b2825d06c16f1c8cdc559c1d6f8

脆弱合約:

https://optimistic.etherscan.io/地址/0xae7b6514af26bcb2332fea53b8dd57bc13a7838e

交易攻擊: https://optimistic.etherscan.io/tx/0x4ec3061724ca9f0b8d400866dd83b92647ad8c943a1c0ae9ae6c9bd1ef789417

感謝閱讀 Verichains!免費訂閱以接收新帖子並支持我的工作。

漏洞分析

攻擊交易之後,攻擊過程非常簡單:利用循環借入USDT並立即贖回。通過在同一筆交易中多次重複此過程,攻擊者成功借入大量USDT ,並同時交換 MO 代幣以獲取該對中的更多USDT 。

調查借用函數:

使用借貸功能時,用戶需要存入一定數量的借貸代幣作為抵押。可借入的供給代幣數量取決於抵押金額和市場價格。此外,該對中的借貸代幣數量也會被銷燬(發送到 BURN 地址)以提高市場價格。

深入瞭解兌換功能:

贖回函數根據經過的時間計算利息,但時間戳只會在The Block增加時增加。因此,如果用戶在單個區塊內贖回餘額,則不會產生任何費用。

從上述函數推導出來的邏輯可以看出,如果我們立即借入並贖回,市場價格就會上漲,從而免除我們的費用,並使我們能夠在後續交易中借入更多USDT 。在整個攻擊過程中,MO 代幣的價格也會上漲,使攻擊者能夠通過交換從該對中獲得大量USDT 。

漏洞的根源在於對內代幣的銷燬和市場價格邏輯的利用。

學過的知識

借用函數中有兩個嚴重的弱點值得我們注意

首先,將代幣從對直接轉移到外部目的地是一種極其危險的行為。UniswapV2 對內的代幣餘額有助於計算 K 狀態,直接影響代幣價格。因此,任何表現出類似行為的操作都應限制在管理員端或經過明確驗證的功能中。

其次,依賴從貨幣對餘額計算的價格會使系統容易受到價格操縱。即使貨幣對中不包含銷燬代幣,當前合約仍然容易受到閃電貸攻擊。攻擊者可以利用閃電貸中的大量資產在調用借入函數之前抬高 MO 代幣價格,然後將 MO 縮水至原始價格。在借入過程中,抬高的價格使攻擊者能夠從合約中竊取大量USDT 。

來源
免責聲明:以上內容僅為作者觀點,不代表Followin的任何立場,不構成與Followin相關的任何投資建議。
喜歡
收藏
評論