安基网 首页 安全 攻防案例 查看内容

三行代码黑客就转走4000万 RVN盗币事件复盘

2020-7-28 01:23| 投稿: xiaotiger |来自: 互联网


免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

摘要: 7月15号,v2ex上突然出现了一个这样标题的帖子:三行代码就转走 4000w RMB,还能这么玩?帖子内容里,攻击者仅仅只用了短短的几行代码,就成功的获利千万RMB,那么他是怎么做到的呢?让我们来回顾一下这次事件。 事件回顾2020年1月16日,开源项目Rav ...
原标题:开源=安全?RVN盗币事件复盘
作者:ACce1er4t0r@知道创宇404区块链安全研究团队

在7月15号,v2ex上突然出现了一个这样标题的帖子:三行代码就转走 4000w RMB,还能这么玩?

帖子内容里,攻击者仅仅只用了短短的几行代码,就成功的获利千万RMB,那么他是怎么做到的呢?

让我们来回顾一下这次事件。

事件回顾

2020年1月16日,开源项目Ravencoin接到这么一则pull request

代码中,提交者将原本定义模糊的报错细分,让人们能够更直观的了解究竟出了什么错误,看起来是在优化项目,但是,事实真是这样么?

2020年6月29日,Solus Explorer开发团队一位程序员在修bug后同步数据时发现了一个suspected transactions with unbalanced VOUTs被Explorer标记出,之后他检查RVN时发现RVN大约被增发了约275,000,000,并发现了大量可疑的reissue asset Transaction,这些交易不仅仅有Asset Amount,而且获得了RVN。在他发现这一事件后,马上和他的团队一起将事件报告给Ravencoin团队。

2020年7月3日,Ravencoin团队向社区发布紧急更新

2020年7月4日,13:26:27 (UTC),Ravencoin团队对区块强制更新了新协议,并确认总增发量为 301,804,400 RVN,即为3.01亿RVN.

2020年7月5日,Ravencoin团队宣布紧急事件结束

2020年7月8日,Ravencoin团队公布事件

事件原理

在解释原理前,我们不妨先重新看看WindowsCryptoDev提交的代码

这是一段Ravencoin中用于验证的逻辑代码。

简单来说,提交者改变了CheckTransaction对Asset验证的判断,将原本isAsset && txout.nValue != 0的条件更改为下面的条件:

  1. isAsset && nType == TX_TRANSFER_ASSET && txout.nValue != 0
  2. isAsset && nType == TX_NEW_ASSET && txout.nValue != 0

这段代码本身利用了开源社区PR的风格(在开源社区中,如果开发者发现提交的PR无关实际逻辑,则不会过度关注代码影响),看似只是细化了交易过程中返回的报错,使得正常使用功能的交易者更容易定位到错误,实则,通过忽略else语句,导致一个通用的限制条件被细化到了nType的两种常见情况下

而代码中nTypt可能的值有如下:

enum txnouttype
{
TX_NONSTANDARD = 0,
// 'standard' transaction types:
TX_PUBKEY = 1,
TX_PUBKEYHASH = 2,
TX_SCRIPTHASH = 3,
TX_MULTISIG = 4,
TX_NULL_DATA = 5, //!< unspendable OP_RETURN script that carries data
TX_WITNESS_V0_SCRIPTHASH = 6,
TX_WITNESS_V0_KEYHASH = 7,
/** RVN START */
TX_NEW_ASSET = 8,
TX_REISSUE_ASSET = 9,
TX_TRANSFER_ASSET = 10,
TX_RESTRICTED_ASSET_DATA = 11, //!< unspendable OP_RAVEN_ASSET script that carries data
/** RVN END */
};

由于代码的改变,当nType == TX_REISSUE_ASSET时,txout.nValue可以不为0。

通过对比正常的交易和存在问题的交易,我们也能验证这一观点。

在正常的Reissue操作中,我们需要向 Address RXReissueAssetXXXXXXXXXXXXXXVEFAWu支付100RVN,之后我们可以得到一个新的Amount为0的Address,如果新的Address的Amount不为0,那么将会返回bad-txns-asset-tx-amount-isn't-zero的错误信息(代码被更改前,修复后会返回bad-txns-asset-reissued-amount-isn't-zero的错误信息)

而攻击者修改了判断条件,导致了在CheckTransaction时并不会检测TX_REISSUE_ASSET,所以能够在Address的Amount不为0的情况下通过判断,最终实现增发RVN。

看完代码后,我们点开这位叫做WindowsCryptoDev的用户的GitHub主页

这是个在2020年1月15日新建的账号,为了伪造身份,起了个WindowsCryptoDev的id,并且同天建了个叫Windows的repo,最后的活动便是在1月16号向Ravencoin提交PR。

而对于这个PR,项目团队的反馈也能印证我们的猜测。


整个攻击流程如下:

  1. 2020年1月15日,攻击者伪造身份
  2. 1月16日,攻击者提交pull request
  3. 1月16日,当天pull request被合并
  4. 5月9日,攻击者开始通过持续制造非法Reissue Asset操作增发RVN,并通过多个平台转卖换为其他虚拟货币
  5. 6月29日,Solus Explorer开发团队一位程序员发现问题并上报
  6. 7月3日,Ravencoin团队向社区发布紧急更新,攻击者停止增发RVN
  7. 7月4日,13:26:27 (UTC),Ravencoin团队对区块强制更新了新协议
  8. 7月5日,Ravencoin团队宣布紧急事件结束
  9. 7月8日,Ravencoin团队公布事件

至此,事件结束,最终,攻击者增发了近3亿的RVN。

总结

随着互联网时代的发展,开源文化逐渐从小众文化慢慢走向人们的视野中,人们渐渐开始认为开源社区给项目带来源源不断的活力,开源使得人人都可以提交请求、人人都可以提出想法,可以一定程度上提高代码的质量、增加社区的活跃度,形成一种正反馈,这使开源社区活力无限。

但也因此,无数不怀好意的目光也随之投向了开源社区,或是因为攻击者蓄谋已久,抑或是因为贡献者无心之举,一些存在问题的代码被加入到开源项目中,他们有的直接被曝光被发现被修复,也有的甚至还隐藏在核心代码中深远着影响着各种依赖开源项目生存着的软件、硬件安全。

开源有利亦有弊,攻击者也在渗透着越来越多开发过程中的不同维度,在经历了这次事件之后,你还能随意的接受开源项目中的PR吗?

REF

[1] 三行代码就赚走 4000w RMB,还能这么玩?

https://s.v2ex.com/t/690286

[2] commit

https://github.com/RavenProject/Ravencoin/commit/d23f862a6afc17092ae31b67d96bc2738fe917d2

[3] Solus Explorer – Address: Illegal Supply

https://rvn.cryptoscope.io/address/?address=Illegal%20Supply

[4] Ravencoin — Emergency Update

https://medium.com/@tronblack/ravencoin-emergency-update-dece62255fd9

[5] Ravencoin — Emergency Ended

https://medium.com/@tronblack/ravencoin-emergency-ended-3f3181a0f6d2

[6] The anatomy of Ravencoin exploit finding

https://medium.com/@cryproscope/the-anatomy-of-ravencoin-exploit-finding-8fa4fe7547a9

[7] RavencoinVulnerability — WTF Happened?

https://medium.com/@tronblack/ravencoin-post-vulnerability-fix-fb3a4bd70b7b

我是安仔,一名刚入职网络安全圈的网安萌新,欢迎关注我,跟我一起成长; 欢迎大家私信回复【入群】,加入安界网大咖交流群,跟我一起交流讨论。

安界网周年庆,cisp考证报名送价值6000元电脑;nisp一级报名送100元现金劵;nisp二级报名送1000元现金劵。更多优惠联系我们。

小白入行网络安全、混迹安全行业找大咖,以及更多成长干货资料,欢迎关注#安界网人才培养计划#、#网络安全在我身边#、@安界人才培养计划。



小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!

本文出自:https://www.toutiao.com/a6853985396989264388/

免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

 最新
返回顶部