木星链 木星链
Ctrl+D收藏木星链
首页 > MEXC > 正文

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

作者:

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

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

背景

北京时间2019年07月13日,去中心化交易所0x协议项目方称其发现严重安全漏洞,并紧急关闭了0xExchangev2.0合约,随后部署了修复后的合约。受此影响,基于0x协议的交易所及钱包,包括RadarRelay,Tokenlon,StarBit等紧急暂停了相关交易服务。PeckShield安全人员跟进分析发现,0xExchange合约在校验订单签名时存在缺陷,导致攻击者可以进行恶意挂单,进而将用户的数字资产低价卖出,扰乱正常的交易秩序。0x协议简介

0xAPI新增滑点保护功能:7月15日消息,去中心化交易协议0x在0xAPI中新增滑点保护功能,该功能可以启用MEV感知智能订单路由,避免MEV带来的交易失败或高滑点。此外,该功能目前支持ETH/USDC、ETH/DAI、ETH/USDT、ETH/WBTC、WETH/USDC、WETH/DAI、WETH/USDT、WETH/WBTC八个交易对,未来将支持更多交易对。[2022/7/15 2:14:57]

0x协议是一个基于以太坊的开放协议,实现链上资产的点对点交易。它期望在以太坊上创建一种标准协议,使得任何人能够基于此协议运行去中心化交易所,实现以太坊上的代币之间的交易。0x协议上的交易特点是链下订单撮合,链上结算,其中为用户交易提供订单服务的参与者称为中继者。0x项目发行了自己的代币ZRX,一方面作为去中心化治理投票权的证明,同时也被作为交易服务费,用于建立在0x协议之上的中继者提供服务的收益。0x协议受到不少去中心化交易所和钱包的青睐,从Etherscan的DEX过去七天交易份额的饼图中能看到,排名靠前的RadarRelay和Tokenlon都是基于0x协议:

BitMEX母公司100x Group宣布将继续资助开发者Alex Hultman:11月30日,BitMEX母公司100x Group官方发文宣布,将继续为开源开发者Alex Hultman提供资金支持,以感谢其为NodeJS系统开发出力。官方提到,自2018年以来,100x Group每年向Alex提供8.6万美元的赠款,并将继续支持其未来的项目。[2020/11/30 22:36:49]

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

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

英国夫妇因使用虚假的Chrome浏览器Ledger扩展丢失14800XRP:一对英国夫妇周六于Reddit上发帖称,其因使用Chrome浏览器上的所谓“Ledger扩展程序”而丢失了14800 XRP。据此前报道,MyCrypto平台的安全主管Harry Denley发现,一个名为Ledger Live的Chrome扩展程序正试图冒充真实的Ledger Live应用,获取用户Ledger钱包的恢复种子(创建Ledger钱包时设置的12或24个单词的助记词)并窃取资产。(CoinGape)[2020/3/29]

本次漏洞共涉及isValidWalletSignature()和isValidValidatorSignature()两个相似的漏洞,由于两者出问题的代码是相似的,本文只以前者为例说明。isValidWalletSignature(bytes32,address,bytes)函数用于验证给定的Wallet合约所定义的签名信息与给定的签名是否一致,用于确保Order是由正确的Maker/Taker执行的交易。但是0xExchange合约在验证的过程中,存在着比较严重的问题:

分析 | FCoin热钱包中ETH等代币已转移到0x5a开头地址 或完成安全隔离工作:据交易所FCoin公告显示,“由于团队关键人员失联,以及部分系统和数据严重受损,导致无法按计划及时恢复。我们正在想办法重建系统和恢复数据,后续恢复进度及预计时间以未来公告为准。”,就部分投资者关心的其相关数字资产是否被盗或“跑路”疑问,针对部分相关数字资产,北京链安ChainsMap监测系统检测发现:

目前FCoin热钱包中的ETH和相关ERC20代币已经转移到0x5a1b06开头地址,但是相关操作于今天凌晨才开始进行,这可能是FCoin重建系统过程中对数字资产的正常安全隔离工作。从FCoin在波场链上的相关资产热钱包来看,相关资产依然在钱包中,近两日没有转出操作。[2020/2/13]

上图是这一函数的全部逻辑,分为两部分:组装签名具体字段为ABI编码格式;根据组装的ABI编码内容计算签名值正确性。其中,第2步的逻辑,在0xv2合约代码中是用汇编实现的:引入cdStart指针,指向calldata中对应的位置;对WalletAddress调用staticcall()OpCode计算签名正确性,注意观察代码,其中的input和output都为cdStart这一指针,即复用input/output的内存;检验步骤2.2中的结果是否正确。WalletAddress为合约的前提下,这样子的流程没有问题。先来看下EVM中合约的执行流程是怎样的,PeckShield安全人员查阅EVM源码的时候发现:

动态 | 0x API 近 24 小时交易量突破 40 万美元:去中心化交易所协议 0x 宣布自推出应用程序接口服务 0x API 之后,在过去的 24 小时内该服务的交易量已突破 40 万美元。此前消息,第三方开发者可以通过接入 0x API 获得链上或链下去中心化交易所(DEX)的流动性。0x API 已经为用户聚合了 0x Mesh、Kyber、Uniswap、Oasis 这些去中心化交易所的流动性,并通过智能订单路由为用户选择最佳价格。随着 0x 集成越来越多的流动性提供方,0x API 将会自动升级,但用户无需做任何调整。目前 Nuo、bZx (Fulcrum)、Zerion、Topo Finance、DeFi Saver 等开放式金融项目已经开始集成 0x API。0x API 正开发更多功能,很快就会上线这些功能包括获得流式价格信息、为项目收集费用以更好商业化变现、创建更高级的交易界面、通过以太坊的元交易(meta transactions)功能提交订单。[2020/2/10]

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

标签:ETH0x协议ALLCHAETH交易是什么意思AlligatorkChargeDeFi Charge

MEXC热门资讯
CEB:Facebook收国会议员联名公开信,要求停止Libra开发

据TheBlock报道,继美国众议员、众议院金融服务委员会主席MaxineWaters呼吁暂停开发Facebook的Libra之后,其他国会议员也加入了她的行列.

1900/1/1 0:00:00
LIBRA:Libra的监管博弈:多方齐发“炮火”暴风监管将临

文|Freesia编辑|Tong来源|PANews自从Facebook发布Libra白皮书,这个尚未面世的数字货币就成功站上了风口浪尖.

1900/1/1 0:00:00
以太坊:以太坊下次分叉重点,看这篇就够了?

作者|秦晓峰编辑|卢晓明出品|Odaily星球日报过去两周,由于众多的以太坊核心开发者奔赴多伦多参加以太坊扩展会议,每周一次的电话会议被迫取消.

1900/1/1 0:00:00
区块链:比较 Cosmos 与比特币、以太坊

编者按:本文来自以太坊爱好者,原作者:PreethiKasireddy,来源:PreethiKasireddy,翻译&校对:stormpang、IANLIU、阿剑.

1900/1/1 0:00:00
比特币:两年十八次结算,Cboe期货都对比特币干了什么

本文来自:哈希派,作者:LucyCheng,星球日报经授权转发。抢先推出比特币期货的Cboe,今天也率先将自家期货合约XBT载入历史.

1900/1/1 0:00:00
LIBRA:一文读懂Facebook加密货币项目Libra白皮书要点

千呼万唤始出来,正如外界期待的那样,6月18日Facebook加密货币项目Libra白皮书正式发布.

1900/1/1 0:00:00