ICX Token交易控制Bug深度分析

SECBIT实验室 安比技术社区 2018-06-16 18:45

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

Image

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


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

Image

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

Image

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

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

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


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


安比(SECBIT)实验室


安比(SECBIT)实验室专注于区块链与智能合约安全问题,全方位监控智能合约安全漏洞、提供专业合约安全审计服务,在智能合约安全技术上开展全方位深入研究,致力于参与共建共识、可信、有序的区块链经济体。


安比(SECBIT)实验室创始人郭宇,中国科学技术大学博士、耶鲁大学访问学者、曾任中科大副教授,后担任知名金融科技公司副总裁。专注于形式化证明与系统软件研究领域十余年,具有丰富的金融安全产品研发经验,是国内早期关注并研究比特币与区块链技术的科研人员之一。研究专长:区块链技术、形式化验证、程序语言理论、操作系统内核。


SECBIT技术社区

info@secbit.io

Image

长按二维码关注


Modified on 2018-09-10

Scan to Follow