“现在进入你还是先行者,最后观望者进场才是韭菜。”
美图董事长蔡文胜曾在三点钟群,高调的说出了这句话,随即被大众疯传。
在他发表完言论没多久,2月美链(BEC)上交易所会暴涨4000%,后又暴跌。尽管他多次否认,聪明的网友早已扒出,他与BEC千丝万缕的关系。

庄家坐庄操控币价,美图的股价随之暴涨,蔡文胜顺利完成了他的韭菜收割大计。
但在币圈,割人者,人恒割之。
就在昨天下午,斯嘉丽注意到,BEC智能合约爆出了一个漏,被黑客利用。黑客瞬间转移57,896,044,618,658,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000.792003956564819968个BEC。

BEC的64亿市值在瞬间归零,且永不可修复。而这一切,竟然是因为一个简单至极的程序Bug
4月22日中午,媒体突然爆出BEC合约出现重大漏洞,黑客攻击者可无限生成代币。

这个新闻爆出后,只有少数几家媒体转发了,并未在业界引起大规模讨论。因为多数人都以为这只是一个普通Bug,简单修复后将会继续恢复交易。
但事情的严重性远超普通大众的想象。因为黑客转走的这些代币,很大程度还是在技术上是无法恢复的。
知乎的资深智能合约专家@爬虫,他从技术的专业角度,分析了这次漏洞的严重性。区块链技术的去中心化和不可篡改,决定了所有的智能合约都必须开源才意义,所以我们顺利查到那笔操作记录的地址。
分别给以下两个地址转了账:
我们可以看到执行的方法是 batchTransfer。

batchTransfer的方法,是用来给指定的几个地址,发送相同数量的代币。常规来说,你能转账的数额,一定无法超过账户余额。
但是,BEC的程序员们,却犯了一个严重的错误,导致了溢出。

这里我要解释一下什么叫溢出。
在计算机中有个叫“缓冲区”的地方,是用来存储用户输入的数据的,缓冲区的长度是被事先设定好的。
如果用户输入的数据超过了缓冲区的长度,那么就会溢出,而这些溢出的数据就会覆盖在合法的数据上。
这就像杯子装水的道理,水多了杯子装不下,当然就会溢出。
那么,开发者有没有考虑到溢出问题呢?其实他考虑了。

如上截图中代码显示,除了数额的计算外, 其他的给用户转钱都用了safeMath 的方法。safeMath 是为了计算安全,而写的一个程式。
而为什么偏偏数额的计算这一句,没有用safeMath的方法呢?这就要问写代码的人了...
黑客抓住这个漏洞,瞬间转移了57,896,044,618,658,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000.792003956564819968个BEC。

导致了BEC市值归零,?6,447,277,680 人民币的突然蒸发。(数据来源 非小号)
目前,该方法已经暂停了,所以看过文章的朋友,不要妄想着一夜暴富了。
事情已经发生了,被转移的代币不可能找回来。我们唯一能想到的解决方法,就是按照所有用户的余额情况,发行新的token,给之前的用户发送等额的代币。
一行代码蒸发64亿,这个BUG惹不起惹不起。

正文到此结束

本文标题:一行代码蒸发64亿,这个BUG太了不起

本文链接:https://www.hantaosec.com/675.html

除非另有说明,本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

声明:转载请注明文章来源及链接,不带链接禁止任何转载!访问任何网络安全相关文章,则视为默认接受网络安全文章免责声明 ,请认真阅读。

喜欢我的文章吗?
别忘了点赞或赞赏,让我知道创作的路上有你陪伴。