主要风险

  • 整形溢出(是否需要合约Owner权限才能实施)

    1. CVE-2018-11809

    2. CVE-2018-11810

    3. CVE-2018-11809

    4. CVE-2018-11812

    5. CVE-2018-11687

    6. CVE-2018-11811

主要编程语言

  • Solidity

CVE-2018-10376

在UTC时间2018年4月24日下午1点17分50秒,区块链安全公司 PeckShield 再一次发出警告,此次是关于MESH Token的一次异常交易(如图1所示);

在这个特定的交易中,有人向自己发送了极大量的MESH Token,Token数量为 0x8fff,ffff,ffff,ffff,ffff,ffff,ffff,ffff,ffff,ffff,ffff,ffff,ffff,ffff,ffff,ffff*(63个f),并设定了极高的

手续费率(0x7000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0001)。【20181024】区块链   ERC20 安全 - 图1

图 1: 一个可疑的MESH Token Transfer(数量巨大)

SMT Token在UTC时间7点16分19秒也遭受了相同模式的攻击。【20181024】区块链   ERC20 安全 - 图2

图 2: 一个可疑的SMT Token Transfer(数量巨大)

我们仔细分析对应的智能合约后,发现 proxyTransfer() 函数存在一个经典的整数溢出问题。【20181024】区块链   ERC20 安全 - 图3

图 3: 一个受proxyOverflow影响的智能合约

如图3所示,_feevalue 这两个输入参数都能被攻击者控制,如果 _fee + _value 的结果正好为 0(也就是溢出的情况),第206行的检查将会失效;

这意味着攻击者不需要任何Token,就可以向一个地址转入大量的Token(第214行);同时根据第217行的代码,相当数量的手续费也将发送给 msg.sender

根据系统的全网监测,我们定位到大量的ERC20 Token都受此影响,包括:
【20181024】区块链   ERC20 安全 - 图4

参考资料