以太坊智能合约 Hexagon 存在溢出漏洞

最近通过对智能合约的审计,发现了一些智能合约相关的安全问题。
其中我们发现智能合约Hexagon存在溢出攻击,可产生无数的token,导致整个代币都没有意义。 Token地址:https://etherscan.io/address/0xB5335e24d0aB29C190AB8C2B459238Da1153cEBA

该代币可能要上交易所,我们已第一时间向官方通知该问题。

以太坊智能合约 Hexagon 存在溢出漏洞

目前发现受影响合约地址:

以太坊智能合约 Hexagon 存在溢出漏洞

 

成因分析

问题出现在_transfer函数当中,当调用transfer转币时,会调用_transfer函数:

以太坊智能合约 Hexagon 存在溢出漏洞

_value可控,burnPerTransaction为常量,当_value + burnPerTransaction溢出时为0,可以导致绕过验证。

以太坊智能合约 Hexagon 存在溢出漏洞

以太坊智能合约 Hexagon 存在溢出漏洞

 

漏洞利用

合约中 burnPerTransaction = 2 ,
所以当转账_value0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe时,
_value + burnPerTransaction =0 ,即可成功攻击,为balanceOf[_to]增加大量代币。

以太坊智能合约 Hexagon 存在溢出漏洞
以太坊智能合约 Hexagon 存在溢出漏洞

 

总结

建议使用 SafeMath 来处理计算操作,避免溢出。
同时,以太坊智能合约有很多开源合约,使用参考开源合约前,应对代码进行安全审计。