火星链 火星链
Ctrl+D收藏火星链
首页 > BTC > 正文

DEX:0x协议漏洞原理剖析:恶意挂单可扰乱正常交易秩序

作者:

时间:1900/1/1 0:00:00

昨天,去中心化交易所协议0x项目方称其发现严重安全漏洞。PeckShield安全人员跟进分析发现,0xExchange合约在校验订单签名时存在缺陷,导致攻击者可以进行恶意挂单,进而将用户的数字资产低价卖出,扰乱正常的交易秩序。所幸项目方及时发现并修复问题,截至目前,尚未有真实攻击发生,并没有产生数字资产损失。

背景

北京时间2019年07月13日,去中心化交易所0x协议项目方称其发现严重安全漏洞,并紧急关闭了0xExchangev2.0合约,随后部署了修复后的合约。受此影响,基于0x协议的交易所及钱包,包括RadarRelay,Tokenlon,StarBit等紧急暂停了相关交易服务。

PeckShield安全人员跟进分析发现,0xExchange合约在校验订单签名时存在缺陷,导致攻击者可以进行恶意挂单,进而将用户的数字资产低价卖出,扰乱正常的交易秩序。

鲸鱼0xb15地址已将2.5万枚ETH存入Binance:金色财经报道,据推特用户The Data Nerd监测,聪明鲸鱼0xb15已将2.5万枚ETH(4700万美元)存入Binance,他在6月初提取了约1800美元,预期利润为250万美元 (4 %) .这是他的“糟糕”交易之一,因为之前他对底部和顶部的把握非常好。[2023/6/28 22:05:27]

0x协议简介

0x协议是一个基于以太坊的开放协议,实现链上资产的点对点交易。它期望在以太坊上创建一种标准协议,使得任何人能够基于此协议运行去中心化交易所,实现以太坊上的代币之间的交易。0x协议上的交易特点是链下订单撮合,链上结算,其中为用户交易提供订单服务的参与者称为中继者。0x项目发行了自己的代币ZRX,一方面作为去中心化治理投票权的证明,同时也被作为交易服务费,用于建立在0x协议之上的中继者提供服务的收益。

0x协议受到不少去中心化交易所和钱包的青睐,从Etherscan的DEX过去七天交易份额的饼图中能看到,排名靠前的RadarRelay和Tokenlon都是基于0x协议:

Cream Finance攻击者已将50万枚DAI换成ETH并转移到0xdeCE开头的地址:金色财经报道,据派盾预警监测,Cream Finance闪电贷攻击者已将50万枚DAI换成278.71枚ETH,并将其转移到标记为中介的0xdeCE...3c3的地址。

此前今日上午报道,Cream Finance攻击者将100万枚DAI换成555.4枚ETH并转至TradeOgre。

此前去年10月消息,DeFi协议Cream Finance遭闪电贷攻击,损失超1.3亿美元。[2023/3/22 13:19:38]

另外,从DAppTotal的DEX24小时交易额排名中也能看到它们的排名:

“0x212bb”开头地址2小时前使用1000ETH购买22.7万枚LINK:金色财经报道,据推特用户Bit余烬监测,“0x212bb”开头地址在2小时前使用1000ETH购买了22.7万枚LINK(价值约165万美元),该笔交易MetaMask赚取手续费8.75ETH(14,280美元)。[2023/2/9 11:56:58]

由于Ethereum平台上大量的DEX都使用了0x协议,而作为最根本的TokenTranfer主合约出问题,这对于整个DEX领域来说,都是比较重大的事件。

漏洞原理分析

本次漏洞共涉及isValidWalletSignature和isValidValidatorSignature两个相似的漏洞,由于两者出问题的代码是相似的,本文只以前者为例说明。

isValidWalletSignature(bytes32,address,bytes)函数用于验证给定的Wallet合约所定义的签名信息与给定的签名是否一致,用于确保Order是由正确的Maker/Taker执行的交易。但是0xExchange合约在验证的过程中,存在着比较严重的问题:

去中心化交易协议 0x 已聚合 Synthetix 在以太坊和 Optimism 上的流动性:8月8日消息,去中心化交易协议 0x 宣布已聚合 Synthetix 在以太坊和 Optimism 上的流动性,用户通过 MetaMask、Coinbase Wallet 进行交易时已可以使用 Synthetix 上的流动性。[2022/8/8 12:10:23]

上图是这一函数的全部逻辑,分为两部分:

组装签名具体字段为ABI编码格式;根据组装的ABI编码内容计算签名值正确性。其中,第2步的逻辑,在0xv2合约代码中是用汇编实现的:

引入cdStart指针,指向calldata中对应的位置;对WalletAddress调用staticcallOpCode计算签名正确性,注意观察代码,其中的input和output都为cdStart这一指针,即复用input/output的内存;检验步骤2.2中的结果是否正确。WalletAddress为合约的前提下,这样子的流程没有问题。先来看下EVM中合约的执行流程是怎样的,PeckShield安全人员查阅EVM源码的时候发现:

动态 | 0x发布0x Mesh公开测试版:去中心化交易所协议0x近日发布0x Mesh公开测试版,通过该P2P网络,中继节点和交易者可以轻松接收和共享订单数据,从而提高网络流动性。由于0x Mesh还在试验阶段,0x官方建议用Mesh接收订单的同时,也使用现存的方式作为订单的数据源。0x计划在未来几周发布一些稳定性和扩展性改进。[2019/7/22]

当被调用的合约没有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类项目,项目方在上线前需要找有资质的安全公司审计安全风险。

标签:DEX去中心化交易所中心化交易所DEX币DEX价格去中心化交易所违法吗LFG去中心化交易所去中心化交易所英文单词去中心化交易所算证券么dex去中心化交易所价格计算器去中心化交易所前三

BTC热门资讯
ABC:远程教育-「电子商务理论与应用」第一次在线作业及答案

电子商务理论及应用第一次在线作业 单选题(共13道题) 收起 1.下列关于电子商务与传统商务的描述,正确的是A、传统商务受到地域的限制,通常其贸易伙伴是固定的.

1900/1/1 0:00:00
EOS:比特币暴跌15%!246个比特币富豪被崩盘,最高损失7000万

全球最受欢迎的加密货币比特币周二暴跌15%,跌至7944.33美元的低点。这是自6月中旬以来,比特币首次跌破8000美元,也是四个月来的最低水平.

1900/1/1 0:00:00
区块链:半月谈|Libra,区块链风云再起非“诈尸”

李虹含李玉文 世事喧嚣,逐利的游戏从不停歇;光阴无休,金融的灵魂总在躁动。比特币之战的硝烟还未散去,2019年6月18日,全球最大互联网公司Facebook宣布上线全球数字加密货币Libra,意.

1900/1/1 0:00:00
数字货币:深度揭秘!“暗网”与比特币千丝万缕的联系!

“96%的互联网数据无法通过标准搜索引擎访问,虽然其中的大部分属于无用信息,但那上面有一东西,儿童贩卖、比特币、赏金黑客……”这个地方就是“暗网”!BlockchainIntel首席执行官K.

1900/1/1 0:00:00
比特币:比特币创始人中本聪多年后以Grin的形象出现?

本文提供了一些信息,解释为什么Grin的创始人IgnotusPeverell可能是中本聪。微笑币Grin创始人是IgnotusPeverell 个人特征的相似性 Grin项目的创始人Ignotu.

1900/1/1 0:00:00
DEFI:英国新加坡留学对比:申请难度、教学质量、就业移民全面分析

2019年入学申请大幕拉开,然而很多同学对于申请地区的一些信息还并不了解,英国、新加坡这两个国家不仅排名紧咬,学制和申请要求也差不多.

1900/1/1 0:00:00