BAI 智能合约漏洞分析及修复方法

链讯 作者:慢雾科技 2018-05-24 17:33:16 阅读:7



5 月 24 日 10:51,KKCoin 转发 BAIC 社区公告称:


BAIC(BAI)项目方在5月24日凌晨发现BAI交易存在大量异常问题,并有若干BAI持仓账户出现异常转出情况,同样情况也出现在其他一些ERC20项目上,据初步分析可能属于ERC20智能合约新漏洞,为保护所有BAI持有人利益,项目方决定立即暂停所有交易所BAI的交易,并建议所有BAI持有人不要私下交易或进行转账操作,以避免损失,项目方会及时跟踪事态进展并进行处理,暂停交易期间,为您带来的不便,敬请谅解。


慢雾安全团队第一时间分析发现,BAI 存在和 EDU 一样的智能合约漏洞。


漏洞分析



在 BAI 智能合约 transferFrom 函数中,未校验 allowed[_from][msg.sender] >= _value 并且函数内 allowed[_from][msg.sender] -= _value; 没有使用 SafeMath,导致无法抛出异常并回滚交易。


通过这个漏洞,攻击者不需要私钥即可转走指定账户里所有的 BAI,并且由于合约没有 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/

图库
关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接