買以太坊 買以太坊
Ctrl+D 買以太坊
ads

DEFI:DeFi浪潮下的“狠角色”DEX夠安全嗎?_definer幣幣幣情

Author:

Time:1900/1/1 0:00:00

如今,隨著人們對DeFi的興趣日益濃厚,DEX風靡一時。它們解決了常見的CEX問題,那我們也會問,DEX夠安全嗎?

在上一篇說明了代幣本身的安全問題后|DEFI安全問題之基礎篇),現在來聊聊DEX在兌換代幣時可能產生的安全問題。目前DEX主要面臨的安全問題大致可分成兩類:

DEX項目本身存在的安全問題。

作為第三方協議,與其他DEFI項目交互時產生的安全問題。

本文將對第一類安全問題進行介紹。

重入漏洞

重入漏洞在上一篇我們也提到過,它屬于需要防范的經典漏洞。與普通代幣的重入相比,Uniswap的重入漏洞的主要表現形式為:攻擊者在一筆兌換交易中利用Uniswap未及時更新價格前發起二次兌換,由于此時Uniswap未更新價格,使得二次兌換可兌出的代幣數量比正常兌換的多。此外,在Uniswap的重入攻擊中,攻擊者利用單筆交易可能只能獲得微小的收益,因此攻擊者往往傾向于使用閃電貸或者循環套利擴大戰果。

以imBTC攻擊事件為例,該事件是由于UniswapV1在調用ERC777系列代幣時,未充分考慮合約回調的情況。

具體表現為:攻擊者使用imBTC代幣兌換ETH時,合約先通過self.getInputPrice函數計算正確的ETH數額并將ETH發送到目標地址,然后調用self.token.transferFrom函數時,會調用imBTC合約的_callTokensToSend函數,而_callTokensToSend函數會調用用戶指定存儲imBTC代幣的合約。因此,如果攻擊者部署存儲合約,并改寫其中TokensToSend函數,那么當兌換代幣時,pair(兩種代幣組成的交易對)合約調用攻擊者部署的存儲合約,就可以回調pair進行二次兌換,而二次兌換時pair合約賬本還未更新,使得計算的ETH數額比正常兌換要多,以此來獲利。

DeFi項目Saffron Finance將于4月30日啟動社區化治理體系:據官方消息,DeFi項目Saffron Finance將于4月30日啟動社區化治理體系,新的治理網站將通過Discourse和Snapshot平臺,允許用戶提交、討論和投票決定Saffron的方向 。包括但不限于:協議的升級,市場營銷,團隊建設,資源分配或其他建議。社區治理流程包括:提案—民調共識檢查—治理元。Saffron鼓勵用戶提供有關系統運行等方面的反饋,并就治理流程提出任何建議。該社區治理體系的應用對于推動Saffron成為一個可靠的去中心化金融至關重要。Saffron Finance是一個去中心化協議,允許流動性提供者選擇定制化的風險敞口獲得收益回報。[2021/5/8 21:37:17]

圖1?Uniswap的tokenToEthInput函數

圖2imBTC的transferFrom函數

圖3imBTC的__callTokensToSend函數

詳細攻擊流程如下:

DeFi跨鏈永續合約平臺YFX.COM將于今日18:00在Balancer進行LBP:據官方最新消息,跨鏈去中心化永續合約平臺YFX.COM將于5月7日18:00在Balancer進行LBP。任何人均可參與獲取YFX Token,此次LBP將持續48小時,于5月9日 18:00結束。LBP結束后將會開啟DEX交易。

YFX.COM由NGC、SNZ、DFG、LD等機構戰略投資,目前已經完成ETH(layer2)、BSC、Heco、Tron主網以及OKExChain測試網的上線,能提供高達100倍永續合約交易BTC、ETH等資產,多次通過CertiK 智能合約安全審計,實現了衍生品交易的去中心化部署。 YFX.COM創新使用高流動性、低滑點的 QIC-AMM 做市商池交易機制,融合了永續合約交易員期望的 CeFi式杠桿以及 DeFi系統的 AMM 的流動性和簡便性。[2021/5/7 21:33:51]

圖4ETH-imBTC事件流程圖

那么,為什么在第二次調用tokenToEthSwapInput函數兌換代幣時,發送的ETH會比正常兌換要多呢?我們可以用公式來還原可兌換代幣數量的代碼邏輯:

首先,正常兌換下,getInputPrice函數計算可兌換的ETH數量為:

幣贏CoinW將于9月7日14:00上線“鎖倉CWT挖DeFi”申購:幣贏CoinW將于9月7日14:00上線“鎖倉CWT挖DeFi”第二期申購,本次活動DeFi流動性挖礦的幣種為SUSHI、YFII、CRV。總額度:1000000個CWT,每份:1000個CWT,人均購買額度:1-10份,鎖倉時間:30天。

據悉,幣贏CoinW將拿出鎖倉的CWT等額的資金用于DeFi流動性挖礦,并且將挖礦收益100%空投給參與此次CWT鎖倉活動的用戶。此次選擇的DeFi流動性挖礦項目是CoinW研究院將通過嚴格的審核標準為投資者篩選出相對安全、被市場廣泛認可和收益較高的DeFi流動性挖礦項目。詳情查看原文鏈接。[2020/9/7]

且正常第二次可兌換的ETH數量為:

但重入后第二次可兌換的ETH數量為:

由此可知,在重入后第二次兌換中只有ETH的儲備量減少,而imBTC儲備量未增加。這樣在分母不增加的情況下,導致了等量的imBTC可以兌換更多的ETH。

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

當合約涉及到資產轉移時,使用“檢查-生效-交互”模式來處理邏輯,對關鍵的業務操作可以使用OpenZeppelin官方的ReentrancyGuard進行修飾。

Hotcoin Global將正式開啟Defi交易,多個熱門defi項目集中上線:據官方消息,Hotcoin Global(熱幣全球)其將于近期全面上線多個熱門Defi項目,同時,Hotcoin Global會加大DEFI布局,引入更多優質DeFi項目,成立Defi交易專區,對其進行全方位的交易支持。

Hotcoin?Global成立于2017年,總部位于悉尼,現持有多國金融牌照,業務范圍覆蓋全球;注冊用戶超過100萬,日活躍10萬,全球穩定排名前25,合作媒體超過100家,擁有自研系統,支持多幣種現貨、合約、ETF、杠桿等交易。[2020/8/14]

swap函數未對K值進行校驗

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

圖5Uniswap的價格波動

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

幣贏CoinW將于7月23日18:00在DeFi專區上線ALEPH:據官方消息,幣贏CoinW將于7月23日18:00在DeFi專區上線ALEPH,并開通ALEPH/USDT交易對。同時將開啟開啟“充值送ALEPH”活動。

據悉,Aleph是面向去中心化未來的去中心化網絡:跨區塊鏈第二層網絡,去中心化安全云計算網絡,去中心化消息傳遞和分析的平臺。[2020/7/23]

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

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

圖7?Router01合約的swapExactTokensForTokens函數

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

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

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

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.歸還閃電貸,完成攻擊。

圖9?事件流程圖

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

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

DecentralizedExchange

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

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

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

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

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

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

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

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

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

詐騙交易池?

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

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

圖13?TRTC合約的transfer函數

圖14?TRTC合約的ensure修飾

圖15?TRTC合約的transferFrom函數

項目方RugPull?

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

?寫在最后?

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

Tags:SWAPEFIDEFDEFILSWAP價格XDEFI價格PeakDeFidefiner幣幣幣情

幣安下載
FER:小心那些利用Etherscan招搖撞騙的人_TRA

區塊鏈索引服務依賴于合約事件來幫助歸檔數據,并在一個漂亮的用戶界面中給我們提供交易記錄,其通常被稱為“區塊瀏覽器”,比如Etherscan.

1900/1/1 0:00:00
以太坊:俄烏沖突下比特幣持續大跌 “數字黃金”的避險屬性還在嗎?_比特幣價格美元趨勢分析

近日,受俄烏沖突升級影響,全球多國股市跳水,加密市場難逃大跌。比特幣價格自2月16日以來一路下跌,于24日失守35000美元關口。與此同時,黃金價格一路上漲.

1900/1/1 0:00:00
HAI:四大汽車公司的區塊鏈應用_AIN

人們對于區塊鏈的應用大多停留在金融以及數字資產方面,然而,實際上區塊鏈已經走進了許多行業,例如農業、汽車行業以及零售業。今天就讓我們來看一下一些知名汽車公司在區塊鏈方面的布局.

1900/1/1 0:00:00
OLA:是授權轉移還是直接偷??Solana授權釣?事件解析_SOLA

前兩天,Solana區塊鏈上出現了安全預警,有?篇?章指出?個名為https://officialsolanarares.net/mint/??釣??站在?戶批準之后,可以將?戶的原?代幣轉?.

1900/1/1 0:00:00
區塊鏈:Web1、Web2、Web3:有什么區別?_MetaWeb3Pad

互聯網發展的下一個階段以其在保存數字媒體財政價值方面的速度、安全性和透明度而著稱。Web3.0一詞最初是由GavinWood博士在一篇描述去中心化互聯網將帶來的突破的博客文章中創造的.

1900/1/1 0:00:00
WEB3:區塊鏈革命還是區塊鏈騙局?一覽當下加密市場概況_3WEB

概述 2020年和2021年的最后一個雙牛周期的特點是“敘事”占主導地位,一個新的優秀項目代幣在于他們的營銷和模因質量上決定,交易公司在第一部分轉向VC.

1900/1/1 0:00:00
ads