关于昨天蔡文胜的 BEC 智能合约出现漏洞,又一个要归零的币 = =

2018-04-23 08:23:26 +08:00
 dappreview

因为该智能合约批量转帐函数中一行代码的疏忽,导致溢出了。。。
所以出现以下奇观。
一笔高达 57,896,044,618,658,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000 的代币转账

该笔交易围观地址:

https://etherscan.io/tx/0xad89ff16fd1ebe3a0a7cf4ed282302c06626c1af33221ebe0d3a470aba4a660f

看了一下智能合约代码
出现问题的函数在 255 行这个 batchTransfer

function batchTransfer(address[] _receivers, uint256 _value) public whenNotPaused returns (bool) {
    uint cnt = _receivers.length;
    uint256 amount = uint256(cnt) * _value;
    require(cnt > 0 && cnt <= 20);
    require(_value > 0 && balances[msg.sender] >= amount);

    balances[msg.sender] = balances[msg.sender].sub(amount);
    for (uint i = 0; i < cnt; i++) {
        balances[_receivers[i]] = balances[_receivers[i]].add(_value);
        Transfer(msg.sender, _receivers[i], _value);
    }
    return true;
  }

合约围观地址
https://etherscan.io/address/0xc5d105e63711398af9bbff092d4b6769c82f793d#code

注意到这一行

uint256 amount = uint256(cnt) * _value;

没有对 amount 做溢出的检测。。 传入的_value 值在第一张图中 8000000000000000000000000000000000000000000000000000000000000000

转账地址为 2 个,所以 cnt =2
于是乎 amount 就溢出了。。

不是 Copy 一个智能合约改一改就叫区块链了

7040 次点击
所在节点    区块链
16 条回复
muziki
2018-04-23 08:27:48 +08:00
讲道理 涉及数值操作下意识就是溢出之类的安全检查吧……
dappreview
2018-04-23 08:30:52 +08:00
@muziki 在 5 分钟就能发币赚钱的生意里面,什么测试啦、code review 啦、代码安全审计啦 都是浮云
jellybool
2018-04-23 08:32:36 +08:00
灵车
ob
2018-04-23 09:08:16 +08:00
这就归零了。。
maichael
2018-04-23 09:13:16 +08:00
抄都抄出问题,怕不是自己留的后门。
ariesjia
2018-04-23 09:38:32 +08:00
好好地用 safeMath 好好地, 都应该用上 lint 所有的运算符都不允许使用 必须 safeMath
DearMark
2018-04-23 09:49:47 +08:00
说归零,就归零,牛币。
deadEgg
2018-04-23 10:07:37 +08:00
人可以投票回滚,和原来以太坊一样

清零是什么说法?
skadi
2018-04-23 10:08:10 +08:00
2^255 笑死.
OrangeM21
2018-04-23 10:40:38 +08:00
你给的传入的数值是 16 进账的,真正传的数值是 10 进制。hahaha.
drakeet
2018-04-23 10:50:10 +08:00
龟苓膏
Hconk
2018-04-23 12:11:50 +08:00
@deadEgg 这种 token 出漏洞是不可能让以太坊回滚区块的,除非是以太坊自身的漏洞才有可能投票回滚。
清零是币价归零。
deadEgg
2018-04-23 15:49:19 +08:00
@Hconk 哦 我理解错了,那看起来得清零了
gftfl
2018-04-23 20:22:47 +08:00
以前 265 的那个蔡老板吗?
davidqw
2018-04-24 03:40:27 +08:00
人家币种牛逼,还可以停服的
haidaotao
2018-04-26 19:22:18 +08:00
这韭菜割得连根都没剩下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/448992

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX