首页 > 品牌人物 > 查看内容
  • 分享到

ICX Token交易控制Bug深度分析

2018-06-23 12:09

来源:tokentalk

作者:佚名

安比(SECBIT)实验室根据ICX项目官方github仓库中报告的一个智能合约代码的漏洞,深入分析后确认该漏洞产生的原因是任何人都能随意开启和关停合约的主要功能(包括转账,授权和烧币)。


github地址:https://github.com/icon-foundation/ico/issues/3 (汇报人id:VexyCats)


ICX的 Token 合约中有一个变量tokenTransfer,只有该变量为true时,所有解锁的账户才可能执行转账,授权他人转账和烧币的操作(这几个操作的函数均使用了isTokenTransfer修饰器)。其中,unlockaddress数组保存着所有的解锁账户的状态,由owner来设置。


在ICX 的 Token 合约中,有两个函数enableTokenTransfer() 和disableTokenTransfer(),用来修改tokenTransfer的值。


这两个函数均使用了一个修饰器,名称为onlyFromWallet。从字面意思理解来看,这个修饰器的作用是仅有walletAddress 账户才可以调用这两个函数。然后不幸的是,在onlyFromWallet的具体实现中,将判断条件写反了!!!也就是说,除了walletAddress以外,所有账户都可以通过修改tokenTransfer,来控制合约功能的开启和关停。


目前,ICX项目的Token已经在币安、OKex、火币等著名交易所上线交易。但安比实验室提醒大家无需恐慌,该Bug只会导致这部分功能暂时无法正常使用,并不会对账户本身的安全造成实质性的影响。同时,经过与项目方接触,对方回复已经采取措施,保护交易不受影响,同时也在积极修复此Bug。


从此Bug也可以看出,ICX项目的智能合约在部署前缺少测试和安全审计,安比实验室再次提醒各项目方,一定要加强智能合约的测试和安全审计工作。


以上观点由安比(SECBIT)实验室提供。

发表评论
回顶部