如今,隨著人們對DeFi的興趣日益濃厚,DEX風靡一時。它們解決了常見的CEX問題,那我們也會問,DEX夠安全嗎?在上一篇說明了代幣本身的安全問題后|DEFI安全問題之基礎篇),現在來聊聊DEX在兌換代幣時可能產生的安全問題。目前DEX主要面臨的安全問題大致可分成兩類:DEX項目本身存在的安全問題。作為第三方協議,與其他DEFI項目交互時產生的安全問題。本文將對第一類安全問題進行介紹。
Part.1
-DecentralizedExchange重入漏洞重入漏洞在上一篇我們也提到過,它屬于需要防范的經典漏洞。與普通代幣的重入相比,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數額比正常兌換要多,以此來獲利。
Bitpanda 加入 Visa Partner Connect 計劃:金色財經報道,通過與奧地利金融科技獨角獸 Bitpanda 合作,Visa 的合作伙伴將有機會使用 Bitpanda 的綜合投資基礎設施解決方案。此外,Bitpanda 的基礎設施被設置為一個模塊化系統,使合作伙伴能夠從中挑選和選擇,例如儲蓄計劃、資產到資產互換、加密抵押、分割股票、完整的區塊鏈服務等等。 API集成,加密貨幣的托管由受 FCA 監管的機構級托管提供商 Bitpanda Custody 提供。
目前的合作伙伴包括德國數字銀行 N26、法國貨幣應用程序 Lydia、英國金融科技 Plum 和意大利開放銀行提供商 Fabrick 等。[2023/3/24 13:23:11]
圖1Uniswap的tokenToEthInput函數
圖2imBTC的transferFrom函數
圖3imBTC的__callTokensToSend函數詳細攻擊流程如下:
SBF律師:正與美檢察官談判以解決SBF保釋條件爭議:2月3日消息,前FTX首席執行官Sam Bankman-Fried(SBF)的律師周四表示,他正在與美國檢察官進行談判,以解決有關SBF保釋條件的爭議。在一份法庭文件中,SBF辯護律師Mark Cohen要求美國地區法官Lewis Kaplan推遲2月7日就此事舉行的聽證會,以及2月2日的最后期限,以解釋SBF為什么能夠在審判前訪問和轉移加密貨幣。
Cohen寫道,雙方希望繼續這些討論,我們樂觀地認為,這將導致雙方在未來幾天內達成協議,消除進一步訴訟的必要性。他指出,檢察官同意了這一要求。美國曼哈頓檢察官辦公室發言人拒絕置評。
金色財經報道,美國檢方要求法官收緊SBF的保釋條件,稱SBF曾通過電子郵件和加密消息應用Signal向FTX美國分公司的法律總顧問發送消息。2月1日消息,美國法官禁止SBF與FTX、Alameda的現任或前任員工聯系。[2023/2/3 11:45:27]
圖4ETH-imBTC事件流程圖那么,為什么在第二次調用tokenToEthSwapInput函數兌換代幣時,發送的ETH會比正常兌換要多呢?我們可以用公式來還原可兌換代幣數量的代碼邏輯:首先,正常兌換下,getInputPrice函數計算可兌換的ETH數量為:
基于以太坊的農業科技公司Dimitra Incorporated完成650萬美元融資:金色財經報道,基于以太坊區塊鏈的農業科技公司Dimitra Incorporated通過發行Dimitra Token完成650萬美元融資,旨在加速其開創性Connected Farmer平臺發展,該平臺通過集成人工智能、區塊鏈、衛星和無人機等先進技術,幫助小農記錄他們的農業活動、開發和生成詳細的報告,并獲得有助于他們做出更好決策的見解。Dimitra Token作為基于ERC-20的實用代幣在以太坊網絡上推出,可在Dimitra平臺內無縫連接,為農民提供激勵,交易可通過 Etherscan 和以太坊區塊鏈進行驗證。(accesswire)[2022/9/27 22:32:23]
且正常第二次可兌換的ETH數量為:
但重入后第二次可兌換的ETH數量為:
由此可知,在重入后第二次兌換中只有ETH的儲備量減少,而imBTC儲備量未增加。這樣在分母不增加的情況下,導致了等量的imBTC可以兌換更多的ETH。針對此類安全問題,成都鏈安建議:當合約涉及到資產轉移時,使用“檢查-生效-交互”模式來處理邏輯,對關鍵的業務操作可以使用OpenZeppelin官方的ReentrancyGuard進行修飾。
Gnosis聯創:編寫軟件是言論自由的體現,技術是中立的:8月13日消息,Gnosis 聯合創始人 Stefan George 在社交媒體上發文表示,Tornado Cash 開發者被捕一事讓其想到了 PGP(優良保密協議)的發明者菲爾·齊默爾曼,齊默爾曼曾在美國被指控違反相關法律而被調查三年,但最終并為被起訴。Tornado Cash 團隊為以太坊帶來了急需的隱私。希望每個人都能再次認識到,編寫軟件是言論自由的一種體現形式,而技術是中立的。在去中心化的領域中的某些地方仍然過于中心化且容易受到審查,我們必須讓監管機構和公眾相信我們正在建設的東西是有益的。[2022/8/13 12:23:04]
Part.2
-DecentralizedExchangeswap函數未對K值進行校驗Uniswap的核心是常量乘積模型K=x*y,其中的K值是該pair合約持有代幣數量的乘積,且要求之后的每一筆交易完成后K值必須增加(考慮手續費)。因此如果不進行K值校驗,將很容易成為攻擊點。
圖5Uniswap的價格波動以ImpossibleFinance事件為例,該項目是Uniswap的仿盤,實現了兩種兌換代幣的函數:cheapSwap和swap。其中cheapSwap函數少了k值校驗,但是項目方知道缺少K值校驗的后果,專門為cheapSwap函數增加了onlyIFRouter做修飾,來限制cheapSwap函數只能被指定的Router合約調用。
Celsius再次還款3440萬枚DAI,清算價格已下降至2722美元:7月6日消息,鏈上數據顯示,加密借貸平臺Celsius Network再次向去中心化借貸協議Maker償還了3440萬枚DAI,將WBTC清算價格下降至2722.06美元。
自7月1日以來,Celsius已向Maker償還了1.83億美元的抵押債務,并從Maker釋放了2000枚WBTC的抵押資產,Celsius仍欠Maker4100萬枚DAI貸款,目前有約2.2萬枚WBTC(價值約4.4億美元)作為這些貸款的抵押品。(CoinDesk)[2022/7/6 1:53:34]
圖6合約未檢查k值的cheapSwap函數正常情況下,當用戶使用Router合約兌換代幣時,首先會使用getAmountsOut函數來計算正確的代幣數量amounts;然后調用safeTransferFrom將用戶的兌換消耗代幣轉入目標pair合約;最后,通過內部調用_swap函數來執行cheapSwap函數將兌換代幣轉至目標地址。
圖7Router01合約的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值校驗和安全驗證依賴外部驗證,做到自身功能完善。Part.3
-DecentralizedExchange通縮代幣未設置pair為分紅例外通縮代幣在交易時會產生額外的分紅與手續費。如果交易合約中包含了此類代幣,且沒有進行特殊處理,那么,就可能導致交易對合約記錄的代幣儲量與實際的代幣可用余額不一致。以XSquid事件為例,XSquid是一種通縮代幣,未將其與WHT代幣組成的pair合約地址添加獎勵例外列表,造成了pair合約除了正常代幣兌換和流動性存儲外,還存有多余的XSquid分紅獎勵代幣。因此,攻擊者就可以調用Swap函數將pair合約多余的XSquid代幣轉換為WHT提取,或者通過skim函數將多余的XSquid代幣直接提取。
圖10XSquid交易對合約未添加獎勵例外
圖11Swap函數可以兌換多余的WHT代幣
圖12skim函數可以提取大于reserve的部分針對此類安全問題,成都鏈安建議:DEX在添加通縮分紅型代幣時多注意手續費以及分紅的處理情況。在創建通縮分紅型代幣交易對時,可以添加獎勵例外來避免此類代幣的分紅問題。此外,以下兩類不屬于DEX本身的安全問題,但是被項目方借助了DEX的特性實施詐騙,所以將其寫在文章末尾。PART.1詐騙交易池這類問題主要是指項目方在自己發行的代幣里留有后門,創建與主流代幣的交易池,誘使投資者使用手里存在價值的代幣買入項目方代幣,并且不斷拉盤對投資者進行投資欺騙。以下面的TRTC項目方為例,項目方創建了ETH-TRTC的交易池。但是在TRTC的代幣合約對transferFrom函數做了相關限制,要求代幣的轉出方為owner(管理員)或者為Uniswap。因此對于投資者,僅可以通過Uniswap買入TRTC代幣,而不能賣出TRTC代幣。最后由項目方把投資者投入的ETH提走跑路,給投資者帶來了巨大的損失。
圖13TRTC合約的transfer函數
圖14TRTC合約的ensure修飾
圖15TRTC合約的transferFrom函數PART.2項目方RugPullRugPull是指項目方卷走投資者資金跑路的行為,目前已成為DeFi生態系統的最大騙局類型,項目方刻意制造代幣價格暴漲的假象、許諾為提供流動性的投資者提供高回報等方式來大量聚集資金,一旦時機成熟就移除池子里的流動性或將代幣卷走。這樣的例子在DeFi屢見不鮮,AnubisDAO、MeerkatFinance、TurtleDEX、Squidtoken魷魚幣等都是在卷款跑路之后,注銷網站和社交媒體銷聲匿跡,導致投資者承擔了巨大的損失。寫在最后
成都鏈安建議項目方使用鎖倉和多重簽名來控制代幣流動性,避免出現砸盤跑路的情況。投資者不要被天上掉餡餅的事情沖昏頭腦,防范虛假宣傳。
NFT數據日報是由Odaily星球日報與NFT數據整合平臺NFTGO.io合作的一檔欄目,旨在向NFT愛好者與投資者展示近24小時的NFT市場整體規模、交易活躍度、子領域市占比.
1900/1/1 0:00:000.概要 現狀:NFT是所有權證明,是你購買作品的收據,不是作品本身。萬物皆鏈接,NFT就是其中一種鏈接.
1900/1/1 0:00:00智能合約激發了創新的動力,使編碼人員能夠重新構想從借貸到交易的一切——所有這些都基于像樂高積木一樣堆疊在一起的開源無許可協議.
1900/1/1 0:00:00本文梳理自前《紐約時報》記者NathanielPopper在個人社交媒體平臺上的觀點,律動對其整理如下:離開《紐約時報》給我額外帶來的好處是,我終于能玩轉Crypto了.
1900/1/1 0:00:00Web3被譽為我們與人和企業的未來交往方式。然而,雖然Web3的基礎技術是嶄新的,但我們仍可以在一個有20年歷史的媒體中找到許多行為上的相似之處:大型多人在線游戲,如《堡壘之夜》、《第二人生》和.
1900/1/1 0:00:00DataSource:FootprintAnalytics數據可以被認為是任何項目最重要的資產,對數據的分析能夠了解過去、現狀,甚至預測未來.
1900/1/1 0:00:00