「RVN增发」事件时间线
6月29日,SolusExplorer开发团队CryptoScope的一个程序员在回归测试时,发现浏览器统计的RVN余额出了问题,在深入排查问题后,他确认主网出现了很多异常的RVN增发操作,随后快速联系Ravencoin官方团队成员反馈了这个bug。在与RVN开发团队沟通后,CryptoScope决定暂时关闭SolusExplorer的部分入口,以降低其他攻击者利用漏洞的可能性,为官方团队解决问题赢得了一定时间。7月3日,RVN团队向社区发布了紧急更新,并最终于7月4日在1,304,352区块上对Ravencoin网络进行了程序修复。7月8日,RVN官方解释称,本次漏洞是由于黑客提交的恶意PR引入的bug导致。此次漏洞共导致RVN增发3.01亿枚,相当于原有210亿总供应量的1.44%,已有供应量的4.6%。根据追踪,大量增发的RVN被拆开发往不同的地址,并最终转到了交易所,官方定位到了以下3个地址:RVhLBBsdFbKmBC1muPB2of74w19NwHzUsKRAekzFLJDfLpaTfMonPNEvahWVYvBu2iE8RU4C2CLwRTm4s4LbWMYdzAJFbZGL5rZqGsRVN团队表示已经追踪到其中一个黑客团队的线索,并已经掌握攻击者的信息,希望其将增发的RVN转至特定的地址进行销毁。RVN团队称已有总计约390万枚增发的RVN被销毁。此外,官方团队没有通过类似ETH硬分叉的形式来解决攻击,而是间接承认了这些增发币的有效性。为了保证总供应量不变,官方给出的建议方案是降低未来挖矿总收益,不过这个方案还需要得到社区的认可,并最终通过链上BIP9升级后才能生效。此次漏洞除了增加RVN的通胀率之外,不会影响用户已有的RVN资产和转账。RVN原有发行总量为210亿,出块时间为1分钟,目前的区块奖励为5,000个RVN,每210万个区块后奖励会减半,也就是约4年减半一次。根据官方目前给出的方案,每次减半将比之前提前59,580个区块。攻击者行为复盘
1月16日,名为WindowsCryptoDev的开发人员在RavencoinGithub提交了一个PR,表面看起来是在完善节点返回的报错信息,该PR很快就得到了Ravencoin官方人员的反馈,并合并进主分支。
PR详情原先的代码,对于asset相关的交易,只要交易的RVNoutputvalue不是0,都会返回“bad-txns-asset-tx-amount-isn't-zero”报错信息。该PR针对不同的asset交易类型进行了报错信息优化,表面看起来是为了方便开发者区分具体的报错原因,但是黑客留了一个后门,即没有针对TX_REISSUE_ASSET进行报错信息优化。注意,这样带来的后果不仅仅是报错信息不可分辨,而是将原本不合法的交易判断为合法的交易,最终导致了RVN的增发。1月17日,黑客在Ravencoin主网持续发布TX_ISSUE_ASSET交易,为后续的TX_REISSUE_ASSET攻击提供基础。5月9日,黑客开始每隔2小时在Ravencoin主网发起一个TX_REISSUE_ASSET交易,增发500,000RVN到自己的地址,该行为一直持续到7月3日,此时黑客察觉到官方已经准备对bug进行修复。7月4日,主网上还出现了3笔新的攻击交易,增发了两笔1,000,000RVN和一笔2,804,398RVN,不过这3笔攻击交易应该都不是之前的黑客所为。从SolusExplorer统计来看,最终总增发量为301,804,400RVN,也就是超过3.01亿RVN。安全提示
虽然此次漏洞只影响了Ravencoin网络,但是还有很多其它区块链系统也遇到过类似的安全问题。例如Bitcoin曾经在2018年被爆出过类似严重的安全漏洞,攻击窗口从2017年10月持续到2018年8月,同时影响了所有2017年10月之后基于Bitcoin代码开发的新币种。不过当时的bug并不是黑客恶意引入,而是开发人员的错误导致,值得庆幸的是,该bug在被开发人员修复之前没有被任何黑客利用。对于区块链开源项目来说,代码贡献者的技术能力、贡献动机等因素都存在诸多不确定性,因此在代码review上需要核心开发团队把好关。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。