以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads

0x協議漏洞原理剖析:惡意掛單可擾亂正常交易秩序_DEX

Author:

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

昨天,去中心化交易所協議0x項目方稱其發現嚴重安全漏洞。PeckShield安全人員跟進分析發現,0xExchange合約在校驗訂單簽名時存在缺陷,導致攻擊者可以進行惡意掛單,進而將用戶的數字資產低價賣出,擾亂正常的交易秩序。所幸項目方及時發現并修復問題,截至目前,尚未有真實攻擊發生,并沒有產生數字資產損失。

背景

北京時間2019年07月13日,去中心化交易所0x協議項目方稱其發現嚴重安全漏洞,并緊急關閉了0xExchangev2.0合約,隨后部署了修復后的合約。受此影響,基于0x協議的交易所及錢包,包括RadarRelay,Tokenlon,StarBit等緊急暫停了相關交易服務。

PeckShield安全人員跟進分析發現,0xExchange合約在校驗訂單簽名時存在缺陷,導致攻擊者可以進行惡意掛單,進而將用戶的數字資產低價賣出,擾亂正常的交易秩序。

0xScope:過去24小時有價值9.15億美元的資產流入幣安:6月7日消息,據 0xScope Protocol 監測,過去 24 小時有 9.15 億資產流入幣安,包括 0x3356 開頭地址轉入的約 1 億枚 USDT、Jump Trading 轉入的價值約 5000 萬美元的以太坊和穩定幣以及 Cumberland 轉入的近 3000 萬美元的 USDT 和 USDC。[2023/6/7 21:22:04]

0x協議簡介

0x協議是一個基于以太坊的開放協議,實現鏈上資產的點對點交易。它期望在以太坊上創建一種標準協議,使得任何人能夠基于此協議運行去中心化交易所,實現以太坊上的代幣之間的交易。0x協議上的交易特點是鏈下訂單撮合,鏈上結算,其中為用戶交易提供訂單服務的參與者稱為中繼者。0x項目發行了自己的代幣ZRX,一方面作為去中心化治理投票權的證明,同時也被作為交易服務費,用于建立在0x協議之上的中繼者提供服務的收益。

0xf02開頭EOA地址出現異動,用戶請盡快撤銷權限:金色財經消息,據CertiK監測,EOA地址0xf02EE89bcea4B38cE71b10B1f1e7c30b11005791出現異動。請曾授權該EOA賬戶地址的用戶盡快撤銷權限。[2023/4/10 13:55:07]

0x協議受到不少去中心化交易所和錢包的青睞,從Etherscan的DEX過去七天交易份額的餅圖中能看到,排名靠前的RadarRelay和Tokenlon都是基于0x協議:

另外,從DAppTotal的DEX24小時交易額排名中也能看到它們的排名:

PeckShield:9小時前0xbd4E地址盜取價值約127萬美元ARB:3月31日消息,PeckShield監測顯示,9小時前,以0xbd4E開頭的攻擊者地址盜取93.3375枚ARB,并換成713枚ETH(約127萬美元),后將其跨鏈至以太坊上。以0xB209開頭的攻擊者地址盜取10.5萬枚ARB,并將其轉入0xC4cf地址與0xB209地址。3月24日,0xbd4E地址與0x7afd地址盜取7250枚ARB,當時價值約1萬美元。[2023/3/31 13:37:45]

由于Ethereum平臺上大量的DEX都使用了0x協議,而作為最根本的TokenTranfer主合約出問題,這對于整個DEX領域來說,都是比較重大的事件。

漏洞原理分析

本次漏洞共涉及isValidWalletSignature和isValidValidatorSignature兩個相似的漏洞,由于兩者出問題的代碼是相似的,本文只以前者為例說明。

0xcd93開頭地址已將40834枚RPL存入Rocket Pool質押:金色財經報道,據推特用戶余燼監測,0xcd93開頭地址19天前開始通過CoW Protocol花費約167萬美元購買40834枚RPL,并將RPL存入Rocket Pool進行質押。

此外,疑似屬于做市商Wintermute地址(0x2490開頭)在Uniswap添加10萬枚RPL(527萬美元)的流動性,該地址共持有21.9萬枚RPL。[2023/2/10 11:59:07]

isValidWalletSignature(bytes32,address,bytes)函數用于驗證給定的Wallet合約所定義的簽名信息與給定的簽名是否一致,用于確保Order是由正確的Maker/Taker執行的交易。但是0xExchange合約在驗證的過程中,存在著比較嚴重的問題:

0xTIGΞR:已有9640枚ETH從Bend DAO集中取出,ETH使用率飆升至86.8%:8月21日消息,Umbra Labs聯合創始人0xTIGΞR發推表示,北京時間8月20日15:52開始的30分鐘內,有9640枚ETH被從NFT流動性協議Bend DAO集中取出,超過了存入平臺的所有ETH(19000枚)的35%。目前該平臺共借出16500枚ETH,ETH借貸使用率已從57.6%飆升至86.8%。

此前報道,BendDAO自8月14日以來已清算了12個用于ETH貸款抵押的NFT。[2022/8/21 12:39:00]

上圖是這一函數的全部邏輯,分為兩部分:

組裝簽名具體字段為ABI編碼格式;根據組裝的ABI編碼內容計算簽名值正確性。其中,第2步的邏輯,在0xv2合約代碼中是用匯編實現的:

引入cdStart指針,指向calldata中對應的位置;對WalletAddress調用staticcallOpCode計算簽名正確性,注意觀察代碼,其中的input和output都為cdStart這一指針,即復用input/output的內存;檢驗步驟2.2中的結果是否正確。WalletAddress為合約的前提下,這樣子的流程沒有問題。先來看下EVM中合約的執行流程是怎樣的,PeckShield安全人員查閱EVM源碼的時候發現:

當被調用的合約沒有code,也就是EOA賬號的情況下,什么都沒有的執行,直接返回。因此,對應到isValidWalletSignature(bytes32,address,bytes)函數來說,其中的cdStart所對應的內存內容在調用staticcall前后并沒有變化,而后面在判斷簽名是否正確的isValid取值的時候,也就取到了錯誤的值。

用戶通過fillOrder(Order,uint256,bytes)函數完成Token買賣,PeckShield安全人員發現,這一函數的三個參數可以由用戶自由配置:

分別為:

代表訂單信息的Order類型;用戶為此訂單付出的Token數量;Order對應的簽名信息signature其中比較關鍵的是Order及對應的signature信息的一致性正是通過上面的isValidWalletSignature類函數校驗,因此,當攻擊者精心構造signature為SignatureTypeWallet時,可『跳過』簽名合法性檢查,從而使得用戶在不經意之間被惡意掛單,從而被攻擊者順利吃單,由于這一訂單信息是由攻擊者直接傳入合約的,因此這一訂單信息在線下的中繼者也無法查詢。

漏洞影響分析

基于上述分析發現,曾在0x協議Exchange上做過授權轉賬的普通用戶帳號都將受到影響:

攻擊者可偽造用戶掛單,低價獲得用戶代幣。

鑒于此安全漏洞的危害性,PeckShield安全人員發現0x項目方在漏洞被發現的時候先緊急關閉了0xExchangev2.0合約的Tokentransfer功能,將所有的ERC20、ERC721、以及MultiAsset的Transfer功能全部下線;隨后部署了修復后的合約,同時告知用戶及使用了0xExchange的所有DEX及Relayer,相關的遷移升級工作正在進行中。受此影響,基于0x協議的交易所及錢包,包括RadarRelay,Tokenlon,StarBit等緊急暫停了交易服務。

PeckShield安全人員通過漏洞特性分析鏈上數據發現,從0xExchange2018-09上線至今,并沒有因此安全漏洞造成的用戶直接資產損失。

對于使用了0x的DEX及錢包來說,當前的階段需要暫停交易服務,如無法暫停交易服務的話,可將對應的0xExchange合約地址變更為當前已經修復的合約地址。

結語

0x協議本次出現漏洞的合約代碼,主要是內聯匯編代碼編寫簽名驗證功能出現的問題,直接編寫匯編代碼雖然在編譯器無法優化合約代碼的情況下非常有用,可控性更強且能提高執行效率,減少Gas消耗,但是編寫Solidity匯編代碼需要對EVM運行機制有非常熟悉的理解,不然EVM的某些特性可能導致編寫的合約無法正常運行,同時也缺少了Solidity提供的多種安全機制。

PeckShield安全人員在此提醒廣大開發者及時排查合約的相關代碼,避免類似問題可能造成的安全風險,對于DEX等DeFi類項目,項目方在上線前需要找有資質的安全公司審計安全風險。

Tags:DEX去中心化交易所中心化交易所DEX幣DEX價格去中心化交易所違法嗎LFG去中心化交易所去中心化交易所英文單詞去中心化交易所算證券么dex去中心化交易所價格計算器去中心化交易所前三

比特幣價格今日行情
朱啟兵:“破7”之后,人民幣何去何從?_價值鏈

中新經緯客戶端8月6日電題:《朱啟兵:“破7”之后,人民幣何去何從?》作者朱啟兵(中銀國際證券首席宏觀分析師)8月5日上午,人民幣離岸、在岸匯率先后破7.

1900/1/1 0:00:00
A股十月“開門紅” 數字貨幣板塊領漲_數字貨幣

中新經緯客戶端10月8日電今日(8日)是A股10月份的首個交易日,三大股指全線上漲,深成指漲逾1%。從盤面上看,數字貨幣、工業大麻、豬肉概念居板塊漲幅榜前列.

1900/1/1 0:00:00
魔獸世界懷舊服第二天金幣價格達到1:30,比15年前的金幣價格還高

眾所周知,魔獸世界60年代版本的金幣非常值錢,因此玩家們對懷舊服的金幣價格已經有了心理預期,然而隨著懷舊服的開放,目前的金幣價格已經超出了玩家預期,甚至達到了1金幣=30R的價格.

1900/1/1 0:00:00
宇宙中心在哪里?_大爆炸

雖然我們現在還無法觀察到461億光年外的宇宙,但隨著時間的推移,宇宙更多的未知將逐一呈現。138億年前,一場大爆炸為宇宙漫長的演化之路拉開了序幕.

1900/1/1 0:00:00
臺灣STO合規在即,“首屆臺灣區塊鏈周”DUSD展現穩定幣新勢力_穩定幣

“第一屆臺灣區塊鏈周”于2019年7月28-30日在臺北國際會議中成功舉辦。紐約數字美元穩定幣DUSD作為聯合主辦方,積極推進議程,全力助推臺灣區塊鏈行業與穩定幣金融基礎設施融合推進.

1900/1/1 0:00:00
《貓和老鼠》更新5個重點內容,分享商城增加3個皮膚!_DOO

游戲再次進行更新了,在本期內容,浩天梳理了下更新的幾個重點內容,除了劍客杰瑞的S級皮膚“白衣劍少”之外,更新還有5個重點內容.

1900/1/1 0:00:00
ads