币圈这几天被黑客攻击搞的人心惶惶。
先是4月22日,美蜜币(BEC)在短短半小时内,从0.32美元暴跌到0.024美元,跌落了92.5%。OKEx紧急发布公告:暂停BEC的交易和提现,重新开放时间“另行通知”。
业界传闻,此次 OKEx 下架亲儿子BEC,是因为该代币合约存在溢出漏洞,攻击者可以利用漏洞批量转账,无限制生成代币。
这相当于,黑客针对某币种的漏洞,可以自己造一台印钞机,想印多少印多少。如未有效制止,“韭菜”们只能眼睁睁地看着自己手中的币贬值到一文不值。
还没等大伙缓过神来,4月25日,又一币种 SMT 也被类似的溢出漏洞整垮。
据火币 Pro 公告,SmartMesh(SMT) 项目方反馈 4 月 25 日凌晨发现其交易存在异常问题,经初步排查,SMT 的以太坊智能合约存在漏洞。受此影响,火币 Pro 目前暂停所有币种的充提币业务。
损失无法估计
首先,我们来了解一下溢出漏洞。
小时候我们刚刚开始学加法时,总喜欢掰着手指头数,如果是10以内的,比如算3+3=6,4+5=9时,很好办,可以正确的算出来。
有天,老师突然让他们算6+5等于多少,这时候手指不够用了。
于是,小朋友在掰完所有手指后,在等于号后算出了 1 这个答案。
BEC 和 SMT的智能合约漏洞,遇到的也是这个问题。
BEC 智能合约中的 batchTransfer 批量转账函数存在漏洞,攻击者可传入很大的 value 数值,使 cnt * value 后超过 unit256 的最大值使其溢出导致 amount 变为 0。
而这次SMT所遇到的问题,则是因为智能合约中proxyTransfer() 函数存在一个经典的整数溢出问题。
_fee 和 _value_ 这两个输入参数都能被攻击者控制,如果 _fee + _value 的结果正好为 0(也就











