先来看影响情况
更多详情可以到这里查看
可以看到今日(2018,5,24)发生了三比大量转账的记录,这些都是这个漏洞所造成的,其中有个比较搞笑的事情:
看第1、2笔红框过的交易,攻击者0x4205....从0xeee28...用户里窃取了660459561个token。
然而,没过几分钟攻击者0x4205窃取来的token全部都被0xc713用户给转走了。
......
这说明什么?攻击者可以从任意用户中盗币!
可以预见的是此币种过不了几天就会市值跌至近0,可以说是一洞回到解放前了。
漏洞成因
源码在这里可以直接看到。
我们直接将目光瞄准到transferFrom函数:
看这行代码
allowed[_from][msg.sender] -= _value;
这里没有做任何检查也没有使用SafeMath库
因此可以选择任意令牌持有者作为_from来转账
应该怎么写?
正确的做法这里可以参考大名鼎鼎的EOS的实现方法,如下:
北京华顺信安从事信息安全,专注于安全大数据、企业威胁情报。
公司产品:FOFA-网络空间安全搜索引擎、FOEYE-网络空间检索系统、NOSEC-大数据安全协作平台。
为您提供:网络空间测绘、企业资产收集、企业威胁情报、应急响应服务。