【得得技术指南】ICX Token交易控制Bug深度分析

SECBIT实验室
SECBIT实验室 机构得得号

Jun 16, 2018 聚焦智能合约安全审计和形式化验证。

摘要: 在各大交易所都上线交易的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)实验室提供。

安比实验室由中科大郭宇博士创立,聚焦智能合约安全研究,致力于打造健康有序的区块链经济体。

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 SECBIT实验室 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信