DeFi浪潮下的“狠角色”DEX,夠安全嗎?_成都鏈安_火星財經

發表於 2022-03-08 09:32 作者: 區塊鏈情報速遞pro

  PART.2

  -Decentralized Exchange

  SWAP函數未對K值進行校驗

  n

  Uniswap的核心是常量乘積模型K=x*y,其中的K值是該pair合約持有代幣數量的乘積,且要求之後的每一筆交易完成後K值必須增加(考慮手續費)。因此如果不進行K值校驗,將很容易成爲攻擊點。

  n

  圖5 Uniswap的價格波動

  以Impossible Finance事件爲例,該項目是Uniswap的仿盤,實現了兩種兌換代幣的函數:cheapSwap和swap。其中cheapSwap函數少了k值校驗(如圖6),但是項目方知道缺少K值校驗的後果,專門爲cheapSwap函數增加了onlyIFRouter做修飾,來限制cheapSwap函數只能被指定的Router合約調用。

  n

  n

  圖6 合約未檢查k值的cheapSwap函數

  n

  正常情況下,當用戶使用Router合約兌換代幣時,首先會使用getAmountsOut函數來計算正確的代幣數量amounts;然後調用safeTransferFrom將用戶的兌換消耗代幣轉入目標pair合約;最後,通過內部調用_swap函數來執行cheapSwap函數將兌換代幣轉至目標地址。

  n

  圖7 Router01合約的swapExactTokensForTokens函數

  但是,由於cheapSwap函數缺少了K值檢驗,如果攻擊者部署惡意代幣合約,在Router合約調用safeTransferFrom函數時,回調正常的pair合約進行同種兌換,由於,回調後的兌換使用的amounts仍是未更新之前的數據,已不符合改變账本狀態之後的校驗,那么攻擊會導致以錯誤的價格兌換出目標代幣,以此獲利。

  n

  圖8 合約進行k值校驗的Swap函數

  n

  該事件的具體攻擊步驟如下:

  1. 在准備階段攻擊者部署了AAA代幣合約,並使用閃電貸借來1000WBNB,兌換65140個項目方的IF代幣。

  2. 使用其中一半的IF代幣(32570個)與攻擊者自己部署的AAA代幣構建IF-AAA交易池。

  3. 執行AAA-IF-BUSD路徑的代幣兌換,且當Router合約調用AAA代幣合約的transferFrom函數時會執行攻擊者的惡意代碼,重入至IF-BUSD的pair合約,並將另一半IF代幣正常兌換出221897個BUSD。

  4. 回歸到AAA-IF-BUSD路徑的兌換,將之前計算的amounts值傳入_Swap函數中執行這筆兌換,用一半的IF又兌換了2521897個BUSBD。

  5. 歸還閃電貸,完成攻擊。

  n

  n

  圖9 事件流程圖

  n

  針對此類安全問題,成都鏈安建議:

  在關鍵的兌換函數中必須做k值校驗,不要爲了節省GAS和代碼量就將K值校驗和安全驗證依賴外部驗證,做到自身功能完善。

  n

  Part.3

  -Decentralized Exchange

  通縮代幣未設置pair爲分紅例外

  n

  通縮代幣在交易時會產生額外的分紅與手續費。如果交易合約中包含了此類代幣,且沒有進行特殊處理,那么,就可能導致交易對合約記錄的代幣儲量與實際的代幣可用余額不一致。

  以XSquid事件爲例,XSquid是一種通縮代幣,未將其與WHT代幣組成的pair合約地址添加獎勵例外列表,造成了pair合約除了正常代幣兌換和流動性存儲外,還存有多余的XSquid分紅獎勵代幣。因此,攻擊者就可以調用Swap函數將pair合約多余的XSquid代幣轉換爲WHT提取(如圖11),或者通過skim函數將多余的XSquid代幣直接提取(如圖12)。

  圖10 XSquid交易對合約未添加獎勵例外

  n

  n

  圖11 Swap函數可以兌換多余的WHT代幣

  n

  n

  圖12 skim函數可以提取大於reserve的部分

  n

  針對此類安全問題,成都鏈安建議:

  DEX在添加通縮分紅型代幣時多注意手續費以及分紅的處理情況。在創建通縮分紅型代幣交易對時,可以添加獎勵例外來避免此類代幣的分紅問題。

  此外,以下兩類不屬於DEX本身的安全問題,但是被項目方借助了DEX的特性實施詐騙,所以將其寫在文章末尾。

  n

  PART.1

  詐騙交易池

  這類問題主要是指項目方在自己發行的代幣裏留有後門,創建與主流代幣的交易池,誘使投資者使用手裏存在價值的代幣买入項目方代幣,並且不斷拉盤對投資者進行投資欺騙。

  以下面的TRTC項目方爲例,項目方創建了ETH-TRTC的交易池。但是在TRTC的代幣合約對transferFrom函數做了相關限制,要求代幣的轉出方爲owner(管理員)或者爲Uniswap。因此對於投資者,僅可以通過Uniswap买入TRTC代幣,而不能賣出TRTC代幣。最後由項目方把投資者投入的ETH提走跑路,給投資者帶來了巨大的損失。

  n

  n

  圖13 TRTC合約的transfer函數

  n

  圖14 TRTC合約的ensure修飾

  n

  n

  圖15 TRTC合約的transferFrom函數

  n

  PART.2

  項目方Rug Pull

  Rug Pull是指項目方卷走投資者資金跑路的行爲,目前已成爲DEFI生態系統的最大騙局類型,項目方刻意制造代幣價格暴漲的假象、許諾爲提供流動性的投資者提供高回報等方式來大量聚集資金,一旦時機成熟就移除池子裏的流動性或將代幣卷走。這樣的例子在DeFi屢見不鮮,AnubisDAO、Meerkat Finance、TurtleDEX、Squid token魷魚幣等都是在卷款跑路之後,注銷網站和社交媒體銷聲匿跡,導致投資者承擔了巨大的損失。

  n

  寫在最後

  成都鏈安建議項目方使用鎖倉和多重籤名來控制代幣流動性,避免出現砸盤跑路的情況。投資者不要被天上掉餡餅的事情衝昏頭腦,防範虛假宣傳。

  本文來源:成都鏈安n原文標題:DeFi浪潮下的“狠角色”DEX,夠安全嗎?聲明:本文爲入駐“火星號”作者作品,不代表火星財經官方立場。n轉載請聯系網頁底部:內容合作欄目,郵件進行授權。授權後轉載時請注明出處、作者和本文鏈接。 未經許可擅自轉載本站文章,將追究相關法律責任,侵權必究。n提示:投資有風險,入市須謹慎,本資訊不作爲投資理財建議。免責聲明:作爲區塊鏈信息平台,本站所提供的資訊信息不代表任何投資暗示,本站所發布文章僅代表個人觀點,與火星財經官方立場無關。虛擬貨幣不具有法定貨幣等同的法律地位,參與虛擬貨幣投資交易存在法律風險。火星財經反對各類代幣炒作,請投資者理性看待市場風險。n語音技術由科大訊飛提供關鍵字:合約UNISWAP代幣DEFI

標題:DeFi浪潮下的“狠角色”DEX,夠安全嗎?_成都鏈安_火星財經

地址:https://www.coinsdeep.com/article/98.html

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

你可能還喜歡