以太坊ERC20Token标准自2015年11月19日诞生以来,为智能合约、以太坊生态以及区块链应用的发展做出了巨大的贡献。据Etherscan网站数据显示,截止2018年6月26日,以太坊主网上ERC20Token数量已超过90000。下图是统计的ERC20每日创建数量趋势图。
这些Token合约所承载的价值不可估量。然而近几个月以来,以BEC事件为开端,引发的一系列的链式反应,越来越多的合约漏洞与不兼容性问题相继被曝光。目前智能合约安全问题的分析披露还比较散乱,对智能合约的开发和后续的使用所起到的作用非常有限,社区缺乏一套完备的合约问题汇总机制。因此安比实验室在分析了近期爆出的合约风险问题和大量的智能合约源码后,携手路印发布智能合约风险列表,联合去中心化交易所DEx.top、轻信科技、Consensys中国、长亭科技等技术团队,共同对该风险列表进行维护。
由于以太坊上部署的合约数量规模还在不断增大,未来还会有更多更复杂的问题暴露出来。因此,我们倡导发起Token合约风险列表共建计划,呼吁更多关心区块链生态的团队或技术人员参与进来,共同维护这份合约风险列表。
ERC20Token的安全问题总结
ERC20Token漏洞事件回顾
在ERC20Token逐渐成熟和完善的发展过程中,不少ERC20智能合约曾出现过重大漏洞,对项目方、投资人、交易所甚至整个以太坊社区造成了比较大的经济损失。例如:
HashKey COO:密切监测VPN交易,“港漂”若回到内地交易将被禁止:金色财经报道,首批获得香港证监会牌照的虚拟资产交易平台HashKey正式推出散户服务,首席运营官翁晓奇表示,接受所有持有香港身份证、具备香港住址证明人士开户,并不需要“三粒星”,但交易时若发现属透过VPN进行,且不在香港证监会合规要求下的地方,例如内地,将密切监测有关用户,适时禁止其交易。换言之,“港漂”能在HashKey平台开户及交易,但若回到内地交易,将被禁止。(东网)[2023/8/29 13:04:12]
2016年6月18日,DAO合约遭到攻击,导致超过3,600,000个以太币(ETH)被盗,迫使以太坊社区不得不采取硬分叉的手段来减少损失,而这更是直接引起了以太坊社区的分裂2018年4月22日,黑客攻击了美链(BEC)的Token合约,通过一个整数溢出漏洞,一时间BEC的价格几乎归零。我们发现至少有10份合约存在该类问题。2018年4月25日,SMT爆出类似整数溢出漏洞,黑客制造和抛售了天文数字规模的Token,导致SMT价格崩盘。2018年5月20日,严重的逻辑漏洞导致EDU用户的Token可被任意转出,同时还有其它3个Token存在相同问题。2018年6月12日,一系列ERC20智能合约整数溢出漏洞(CVE-2018-11687,CVE-2018-11809,CVE-2018-11810,CVE-2018-11811,CVE-2018-11812)又被爆出,据不完全统计有800多个合约受到影响。
比特币全网未确认交易数量为180670笔:金色财经报道,据BTC.com数据显示,目前比特币全网未确认交易数量为180670笔,全网算力为333.82 EH/s,24小时交易速率为6.95交易/s,目前全网难度为48.71 T,预测下次难度下调2.14%至47.67 T,距离调整还剩4天7小时。[2023/5/1 14:36:40]
大量ERC20Token实现未严格遵守规范
未参照ERC20标准实现Token合约会给DApp开发带来较大的困扰。某知名DApp团队在深入分析了排名前20的合约之后,提示社区需要对Token合约的诸多实现问题和不规范行为重视起来,尤其是对于新的DApp开发者,提早避免一些问题。
NearlyathirdofthetimedevelopingBsktwasspentauditingexternaldependencies.WehighlyencourageotherEthereumdevteamstobeawareofthedangersinexternaldependencies.Unlikesoftwaredevelopmentinmostsystems,it’scriticaltoreadtheimplementationofdeployedcontractsyoudependon—notjusttheinterface.
我们还注意到,大量已部署Token合约曾经参考了以太坊官网以及OpenZeppelin等其它DApp。据不完全统计,存在该类问题的合约超过2000份。
区块链支付公司Centbee完成100万美元Pre-A轮融资:12月28日消息,区块链支付公司Centbee完成100万美元Pre-A轮融资,Ayre Ventures创始人Calvin Ayre领投,资金用于扩大规模和增长,以及加强技术和运营能力。
Cantbee由联合首席执行官Lorien Gamaroff和A??ngus Brown创立,是一家提供数字现金钱包的区块链支付公司。(finsmes)[2022/12/29 22:13:18]
若干Token合约在标准approve()函数中添加了对当前账户余额校验逻辑。导致采用类似0x协议的诸多DApp有可能无法正常完成approve(),必须由Token项目方提前转入一笔数额巨大的Token至中间账户,这给DApp和交易所带来了诸多不便。超过17份合约存在该问题。
ERC20规范中规定了几个可选的通用查询接口如name()、symbol()、decimals(),因而大量Token合约未提供这些接口,甚至不少采用NAME()、SYMBOL()、DECIMALS()等不一致的写法,也给合约的外部调用带来了极大的麻烦。存在该类问题的合约超过3000份。
ERC20标准中还规定了Transfer和Approval事件必须在特定场景下触发。很多Token的实现参考了以太坊官网的不标准代码,漏掉触发Approval事件的操作。存在该类问题的合约超过1800份。
ERC20安全问题汇总与分类
Flow选择了Bond为数字钱包提供支持:金色财经报道,嵌入式金融平台Bond今天宣布,住宅房地产企业Flow已选择Bond作为嵌入式金融平台合作伙伴,为Flow计划中的数字钱包提供动力,该钱包将提供差异化的金融产品。Bond的平台使Flow能够在Flow的数字钱包中为其社区成员提供一套独特的嵌入式解决方案。具体功能将在以后公布。[2022/12/11 21:36:32]
我们对数万份ERC20Token合约存在的问题进行分析统计,已将所有统计数据上传至Github仓库。
Github仓库地址:https://github.com/sec-bit/awesome-buggy-erc20-tokens
已发现的所有ERC20Token合约安全风险问题被归纳为三大类:代码实现漏洞,不规范问题,权限管理问题。
代码实现漏洞涵盖了合约代码功能实现和逻辑实现上的漏洞,如整数溢出不规范问题涵盖了因代码实现不规范导致版本不兼容或者外部合约调用时的无法不兼容问题,如ERC20接口无返回值权限管理问题涵盖了所有因管理权限设置不当而引发的问题,如owner可以操作任何人账户上的余额
问题列表如下:
在awesome-buggy-erc20-tokens仓库的文章中对每个问题给出了详细描述信息。
如何使用Token合约风险列表
Token合约开发者:本列表提供了详细的问题描述和相关合约列表,希望能够借此提ERC20Token合约开发者的安全意识,避免在后续的合约开发中重复踩坑。DApp项目方:以太坊平台的DApp可能会与多个ERC20Token合约对接。DApp项可以通过本仓库查阅已部署的问题合约的详细信息,获知Token合约存在的问题,避免因Token合约的漏洞或者合约的不兼容问题,给DApp带来不必要的麻烦。其他生态参与者:本列表收录了大量ERC20Token合约存在的风险问题,并记录了市值排名较的672份已部署的Token合约的基本信息和问题详情,大家可以通过查阅本仓库来找到问题合约,了解已部署Token合约存在的风险。
Bitget:将保护基金Protection Fund提升至3亿美元:金色财经报道,加密交易平台 Bitget 宣布将其保护基金 Protection Fund 提升至 3 亿美元,以便为加密用户提供更好的保护和进一步的保障,并且在 FTX 倒闭给加密货币市场建立更多信心。此外, Bitget 还透露正在准备储备金 Merkle 树证明,预计将在 30 天内公布。Protection Fund 于今年 7 月推出,旨在保护用户的加密资产,该基金完全是自筹资金,继而拥有更大的灵活性和自由裁量权来有效地覆盖用户资产保护。(thisdaylive)[2022/11/17 13:16:34]
Token列表包含哪些内容
awesome-buggy-erc20-tokens仓库共收录了以太坊上数万份ERC20Token合约中存在的问题。主要包含三部分内容:Token合约的基本信息,问题Token列表,风险问题汇总。
1.合约的基本信息仓库中目前已收录的合约,所有问题合约均来源于此。
另外,仓库中还统计coinmarket网站收录的Token合约的详细信息,包括token的排名,token名称,token缩写符号,总量,小数位数和上线交易所的信息。
2.所有的问题合约列表,列表分别以json和CSV的形式展示,也便于导入表格软件或者编写脚本进行分析。
3.风险问题汇总文件
仓库中共收录了28种合约风险问题,对所有问题的详细信息,包括详细的描述、错误的代码实现示例、推荐修改的代码实现示例、存在该问题的合约列表和对该问题报道的相关链接。
以batchTransfer-overflow问题为例:
声明
本列表信息全部来源于以太坊区块链,etherscan.io,coinmarketcap.io等公开网站上的公开信息本列表所列所有问题均属于已披露的漏洞或缺陷,不包含任何未公开漏洞本列表中存在多个合约Token名称重复现象,请以合约地址为准;Token名称只做参考,可能与知名项目重复,请勿过分解读本列表中的数据可能会存在偏差或遗漏,请大家直接提交更改请求或者通知我们(info@secbit.io)
发起共建计划
awesome-buggy-erc20-tokens仓库由安比实验室持续维护,路印团队提供信息更新支持。并欢迎大家共同参与维护更新工作,共同推进以太坊生态健康发展。参与方式:
提交未被列入的问题ERC20Token合约地址提交新的ERC20Token合约漏洞提供改进建议或参与讨论
同时我们也在寻求更多的力量,来共同开发更友好的前端查询页面,以供大家查询。如果你有其他任何问题或者想法,欢迎加入我们的Gitter参与讨论。
安比实验室与路印合作共建安全可信的以太坊生态,安比实验室团队将担任路印协议的安全顾问,提供合约验证与Token合约审计技术服务。路印协议是基于智能合约的去中心化交易撮合协议,提供100%开源的去中心化交易前后台解决方案。详情请访问路印官网:https://loopring.org
致谢:特别感谢DEx.top团队参与早期列表建设想法的讨论;感谢叶健,ZongminYu,吴玉会,YiTang等人对合约风险列表内容所提供的宝贵意见。
Reference
MarketshareofEthereum-basedtokensgrowsto91%https://medium.com/@amincad/market-share-of-ethereum-based-tokens-grows-to-91-fdefadfd9f6eAdisastrousvulnerabilityfoundinsmartcontractsofBeautyChain(BEC)https://medium.com/secbit-media/a-disastrous-vulnerability-found-in-smart-contracts-of-beautychain-bec-dbf24ddbc30e,Apr23,2018.UnderstandingTheDAOHackforJournalistshttps://medium.com/@pullnews/understanding-the-dao-hack-for-journalists-2312dd43e993,Jun19,2016.SmartMeshAnnouncementonEthereumSmartContractOverflowVulnerabilityhttps://medium.com/smartmesh/smartmesh-announcement-on-ethereum-smart-contract-overflow-vulnerability-f1ded8777720,Apr25,2018.SECBIT:智能合约红色预警:四个Token惊爆逻辑漏洞,归零风险或源于代码复制https://mp.weixin.qq.com/s/lf9vXcUxdB2fGY2YVTauRQ,May24,2018.ERC20智能合约整数溢出系列漏洞披露https://www.secrss.com/articles/3289,Jun12,2018.数千份以太坊Token合约不兼容问题浮出水面,恐严重影响DAPP生态https://mp.weixin.qq.com/s/1MB-t_yZYsJDTPRazD1zAA,Jun8,2018.ERC20智能合约的approve千万别这样写https://mp.weixin.qq.com/s/hYE4nu7FCD_nJH5WMRrXMA,Jun15,2018.Whatwelearnedfromauditingthetop20ERC20tokencontractshttps://blog.cryptofin.io/what-we-learned-from-auditing-the-top-20-erc20-token-contracts-7526ef3b6fb1,Mar28,2018.
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。