EduCoin(EDU) 智能合约漏洞分析及修复方法
5 月 24 日凌晨 01:33 时分,火币 Pro 发布公告称 EduCoin(EDU) 官方智能合约升级,慢雾安全团队综合「慢雾区」情报得知,EDU 智能合约可能存在漏洞,并随后进行了深入分析。
漏洞分析
在 EDU 智能合约 transferFrom 函数中,未校验 allowed[_from][msg.sender] >= _value 并且函数内 allowed[_from][msg.sender] -= _value; 没有使用 SafeMath,导致无法抛出异常并回滚交易。
通过这个漏洞,攻击者不需要私钥即可转走指定账户里所有的 EDU,并且由于合约没有 Pause 设计,导致无法止损。
修复方法
在 require(balances[_from] >= _value); 下一行增加 require(allowed[_from][msg.sender] >= _value); 或者引入 SafeMath,在合约中增加 using SafeMath for uint256; 同时修改为 allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
[广告]赞助链接:
关注数据与安全,洞悉企业级服务市场:http://www.ijiandao.com/
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/