以太坊代币“假充值”漏洞细节曝光

原标题:以太坊代币“假充值”漏洞细节曝光

近日以太坊代币“假充值”漏洞影响面非常之广,影响对象至少包括:相关中心化交易所、中心化钱包、代币合约等。单代币合约,慢雾的不完全统计就有 3619 份存在“假充值”漏洞风险,其中不乏知名代币。出于影响,慢雾采取了负责任的披露过程,这次攻击事件的披露前后相关时间线大致如下:

漏洞细节

以太坊代币交易回执中 status 字段是 0x1(true) 还是 0x0(false),取决于交易事务执行过程中是否抛出了异常(比如使用了 require/assert/revert/throw 等机制)。当用户调用代币合约的 transfer 函数进行转账时,如果 transfer 函数正常运行未抛出异常,该交易的 status 即是 0x1(true)。关注公众号九以太,获得更多链圈咨询

如图代码,某些代币合约的 transfer 函数对转账发起人(msg.sender)的余额检查用的是 if 判断方式,当 balances[msg.sender] < _value 时进入 else 逻辑部分并 return false,最终没有抛出异常,我们认为仅 if/else 这种温和的判断方式在 transfer 这类敏感函数场景中是一种不严谨的编码方式。而大多数代币合约的 transfer 函数会采用 require/assert 方式。

当不满足条件时会直接抛出异常,中断合约后续指令的执行,或者也可以使用 EIP 20 推荐的 if/else + revert/throw 函数组合机制来显现抛出异常,如图:

慢雾很难要求所有程序员都能写出最佳安全实践的代码,这种不严谨的编码方式是一种安全缺陷,这种安全缺陷可能会导致特殊场景下的安全问题。攻击者可以利用存在该缺陷的代币合约向中心化交易所、钱包等服务平台发起充值操作,如果交易所仅判断如 TxReceipt Status 是 success(即上文提的 status 为 0x1(true) 的情况) 就以为充币成功,就可能存在“假充值”漏洞。

9eth.org

创新型区块链俱乐部

·虚拟币制作

·虚拟币钱包开发

·虚拟币交易系统

·虚拟币商城对接

·OTC场外交易系统开发

·DAPP去中心化应用开发返回搜狐,查看更多

责任编辑:

声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
阅读 ()
免费获取
今日搜狐热点
今日推荐