【得得技术指南】ICX Token交易控制Bug深度分析
摘要: 在各大交易所都上线交易的ICX Token发现Bug,任何人都能随意开启和关停合约的转账功能。
6月16日,ICX项目官方github仓库中被报告存在一个智能合约代码的Bug,该Bug使得transfer功能失效,安比(SECBIT)实验室对合约代码进一步深入分析指出,这个Bug产生的原因是任何人都能随意开启和关停合约的主要功能(包括转账,授权和烧币)。
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)实验室提供。
安比实验室由中科大郭宇博士创立,聚焦智能合约安全研究,致力于打造健康有序的区块链经济体。
评论(0)
Oh! no
您是否确认要删除该条评论吗?