ERC20代币Soarcoin (SOAR) 存在后门,合约所有者可任意转移他人代币

介绍


SOAR是一款基于以太坊的加密货币,以提高您所有付款和交易的效率和透明度。它能够在世界任何地方实时,即时地转移资金,并且无需通过最安全的方式进行限制。

SOAR与澳大利亚房地产业整合,允许SOAR通过专用智能应用程序用于支付租金,甚至在澳大利亚购买房产。

此币的合约代码信息可以在这里看到:https://etherscan.io/address/0xD65960FAcb8E4a2dFcb2C2212cb2e44a02e2a57E

此币目前市值为1.8亿人民币,总供给量为50亿。

详细情况如下:



我们再来看看从6月4日到今天的一个价格走势:


可以看到在6月5日出现了瀑布式的下跌,这是有原因的,这就跟我下面要说的这个问题有关。


漏洞还是后门?


我们先来看看具体的代码片段

    function zero_fee_transaction(
        address _from,
        address _to,
        uint256 _amount
    ) onlycentralAccount returns(bool success) {
        if (balances[_from] >= _amount &&
            _amount > 0 &&
            balances[_to] + _amount > balances[_to]) {
            balances[_from] -= _amount;
            balances[_to] += _amount;
            Transfer(_from, _to, _amount);
            return true;
        } else {
            return false;
        }
    }

好熟悉啊...

跟之前的EduCoin的transferFrom任意转账漏洞有异曲同工之妙!

这是EduCoin的漏洞代码片段

QQ截图20180524120033.jpg


科普一下,许多人可能不懂allowed变量的作用。

在ERC20标准中,是允许他人帮自己进行转账操作的,只不过需要本人设置,设置允许谁转他本人的token,允许转多少。而这个信息就存储在allowed变量中。

我们看看区别在哪里:

  1. 后者是因为没有检查allowed[_from][msg.sender]而导致攻击者可以转账任意账户里的token。而前者似乎就没有检测allowed的打算,是特意为转账任意账户的token而设计的函数。

  2. 前者可以看到增加了一个名为onlycentralAccount的修饰符,经过笔者研究,增加了这个修饰符的函数只有合约所有者能调用,而后者是任何人都可以调用的。

很明显,在一个安全研究者眼中,这并不算漏洞,这就是一个后门。

而官方的回应是:这并不是一个后门,我们也并不打算用它来破坏市场,它是为空投目的而开发的。

然而,Byte Power Group(与Soarcoi合作的一个公司) 2月12日向ASX表示,Soarcoin于1月1日从其钱包中撤出一些token。Soar Labs(Soarcoin官方)撤回的Soarcoins数量约为2.14亿,当日价值约6.6百万美元。

笔者突然想起了一句IT名言:“这不是bug,这是featrue!”

猜你喜欢

转载自blog.csdn.net/fly_hps/article/details/80796179