漏洞描述 :

官网:https://radex.ai/

Redex去中心化交易所搭建在以太坊上面,合约地址为:https://etherscan.io/address/0x9462eeb9124c99731cc7617348b3937a8f00b11f#code

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

 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代币在对Radex交易所转账后执行回调操作的。

当接收到用户的ERC223代币,Radex交易所就会在自己的体系里面给用户标记上其所拥有代币资产。

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

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

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

以第二点为例:

1、先找一个存在call注入漏洞的代币

Redex去中心化交易ERC223代币假充值隐患

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

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

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

不过这个缺陷危害有限,主要因为以下两点:

1.需要有存在call注入漏洞的代币来配合完成

2.就算配合代币完成了假充值,在该去中心化交易所的官网上也不一定会上该币,合约中是存在,但是网站上是看不到的。

这个问题只能算一种潜在的隐患。

相关文章:

  • 2021-10-01
  • 2021-12-04
  • 2021-11-05
  • 2021-06-18
  • 2021-07-17
  • 2021-11-01
  • 2021-11-28
  • 2021-12-31
猜你喜欢
  • 2021-12-22
  • 2021-08-16
  • 2021-04-29
  • 2021-05-07
  • 2021-09-14
  • 2021-06-17
  • 2021-06-06
相关资源
相似解决方案