某去中心化交易所存在假充值漏洞

  • A+
所属分类:安全文章

点击蓝字  关注我们

01

漏洞描述

某去中心化交易所平台上搭建在以太坊智能合约平台上,发现某标记回执函数存在任意调用,可以造成假充值漏洞

02

漏洞详情

合约地址:

https://cn.etherscan.com/address/0x9462eeb9124c99731cc7617348b3937a8f00b11f#code

缺陷函数为tokenFallback函数,在186-190行:

  function tokenFallback(address _from, uint _value, bytes /* _data */) {    // ERC223 token deposit handler    balances[_from][msg.sender] = balances[_from][msg.sender].add(_value);    Deposit(msg.sender, _from, _value, now);  }

此函数是用于erc223代币在对交易所转账后执行回调操作的,当接收到用户的er223代币,交易所就会在自己的体系里面给用户标记其所拥有代币资产。

但是在这个tokenFallback函数没有经过任何验证,在接收到ERC223代币的请求后就直接给用户标记资产了,这里会有几点安全问题:

1.代币自己作恶,如果代币自己向此合约恶意调用tokenFallback方法的话,那么此交易所就会凭空标记无数代币资产

2.代币代码缺陷,如果代币存在相关漏洞,可以使代币向此合约的tokenFallback函数发起请求的话,也会造成此交易所凭空标记无数代币资产,而并没有受到任何代币。

举个例子:
1.先找一个存在call注入漏洞的代币

某去中心化交易所存在假充值漏洞

这里我找到了一个名为18T的代币在approveAndCallcode函数中存在call注入漏洞,此代币已经上过其他很多交易所。

此时攻击者只需要调用此代币的approveAndCallcode函数,并把spender参数设置为交易所的地址,然后在extraData中填充函数名(tokenFallback)、参数(充值地址、充值数量)等信息就可以在此交易所给自己充值无数的18T代币。

但交易所实际上没收到任何18T代币。

缺陷:需要有call注入漏洞的代币来完成、就算有假充值漏洞,去中心化的交易所也不一定有该币种。

某去中心化交易所存在假充值漏洞


本文始发于微信公众号(IDLab):某去中心化交易所存在假充值漏洞

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: