编者按:本文来自36氪战略合作区块链媒体“Odaily星球日报”(公众号ID:o-daily,APP下载)
继USDT发生“假充值”漏洞后,近日,慢雾区再曝以太坊代币“假充值”漏洞。
据慢雾区今日消息,以太坊代币“假充值”漏洞目前影响广泛,相关中心化交易所、中心化钱包、代币合约等均受影响。单代币合约,不完全统计就有 3619 份存在“假充值”漏洞风险,其中不乏知名代币,并强调当前漏洞已发生真实攻击,督促相关项目方应尽快自查。在7月9日,慢雾区曾发布以太坊代币“假充值”漏洞攻击预警。
据其披露的细节,在用户进行转账时,一些代币合约的 transfer 函数对转账发起人(msg.sender)的余额检查用的是 if 判断方式,而这种温和的判断方式在 transfer 这类敏感函数场景中并非一种严谨的编码方式,而这种不严谨的编码方式是一种安全缺陷,这种安全缺陷可能会导致特殊场景下的安全问题。攻击者可以利用存在该缺陷的代币合约向中心化交易所、钱包等服务平台发起充值操作,若交易所仅判断如 TxReceipt Status 是 success,则就有可能以为充币成功,产生“假充值”“假交易”。
对于修复方案,慢雾区认为,已有漏洞的代币最好的方式是重发,然后新旧代币做好“映射”。此外,交易所、平台方、代币合约方均应承担起安全责任。对于交易所来说,应在判断交易事务 success 之外,还应二次判断充值钱包地址的 balance 是否准确的增加;对于平台方来说,在对接新上线的代币合约之前,应该做好严格的安全审计;对于代币合约方来说,应该严格执行最佳安全实践,并请第三方职业安全审计机构完成严谨完备的安全审计。
漏洞细节发出后,截至发稿前,已有IOST官方表示其合作交易所均无“假充值”风险。
回顾6月份发生的USDT“假充值”漏洞,其漏洞逻辑也并无二致,攻击者同样是利⽤交易所对USDT交易转账的判断逻辑缺陷,恶意构造虚假转账盗取交易所代币。
智能合约本质是一段运行在区块链网络中的代码,它完成用户所赋予的业务逻辑。随着当前智能合约漏洞出现的频率愈加频繁,其安全问题也逐渐引起公众重视。据RatingToken统计数据,当前区块链世界中每日新增智能合约从4W-18W不等,而在白帽汇安全研究院的《区块链产业安全分析报告》中,由于智能合约所导致的安全问题已经造成了12.4亿美元的损失,占到了总损失的43.3%。
2016年6月,以1.5亿美元成为当时最大金额ICO的TheDAO,因其智能合约出现“递归调用漏洞”遭黑客攻击,导致价值6000万美元以太币被盗。该漏洞具体来说,即在调用方使用splitDAO函数调用DAO资产时,该漏洞将允许该函数非法的再次调用自己,然后不断重复这个过程。这样的递归调用可以使得攻击者的DAO资产在被清零之前,数十次的从TheDAO的资产池里重复分离出来理应被清零的攻击者的DAO资产。这次漏洞是以太坊历史上的一次大型安全丑闻,也直接导致了硬分叉。
在2018年,新的漏洞也在出现。以SMT、BEC、EDU、BAI为代表的代币智能合约漏洞都在转账逻辑中产生了“整数溢出漏洞”,该漏洞可导致代币可以无限增发或任意转账。
以美链BEC为例,黑客利用以太坊ERC-20智能合约中BatchOverFlow漏洞中的数据溢出的漏洞,攻击了美链BEC的智能合约,通过转账的手段生成合约中不存在的、巨量的Token并将其转入正常账户,并且账户中收到的Token可以正常地转入交易所进行交易,与真的Token并无差别。
另外,新加坡国立大学的Loi Luu等人也曾发现“交易顺序依赖漏洞”,他们指出,在智能合约执行的过程中,由于发起方对函数调用的顺序不同,可能会产生不同的输出结果,形成业务逻辑漏洞。
针对当前智能合约产生的漏洞,区块风豹实验室技术负责人张文君向星球日报表示,如以危险级别为标准,当前合约漏洞可分为高危、中危、低危漏洞。具体来说,在高危漏洞上,合约代码中可能存在整数的上下溢出,攻击者可用于盗取资金、恶意转账等;在中危漏洞上,交易金额无法篡改,但在调用外部合约上存在漏洞,攻击者可用于双花攻击、恶意转账;低危漏洞中,则体现在合约撰写不规范,部署的时候导致更多费用的问题,给调用方造成经济损失,存在优化的空间。
(我是Odaily星球日报记者芦荟,爆料、交流请加微信1012387983,烦请备注姓名、单位、职务和事由。)