该内容已被发布者删除 该内容被自由微信恢复
文章于 2021年9月5日 被检测为删除。
查看原文
被用户删除
其他

吃个大瓜!3行代码PR,搞走4000万...

鸭哥 鸭哥聊Java 2021-09-05

最近,鸭哥在v2ex这个网站看到一个代币RVN被恶意增发的黑客攻击事件,这个瓜必须带着大家一起吃,太TM有趣了,一个黑客把一群开发玩得团团转~~~


这个RVN也就是俗称的“乌鸦币”(引用了权力的游戏),发起于2018年3月,目前市值排名63(见下图)。

在虚构的维斯特洛世界中,乌鸦被用作传递真理陈述的信使。

权利的游戏

在鸭哥看来,这种扯淡的白皮书看看就好了(只要你有影响力,你也可以去发xx币,某宝上有专门的打包服务),什么XX币代表着未来,全都是扯淡,说白了就是割韭菜。

事情是这样的。


6月29号,CryptoScope开发团队的一个资深程序员,正喝着Coffee,做着回归测试,突然发现乌鸦币的余额不对,经常他自己的排查,这才发现主网除了正常的挖矿操作,还出现了很多异常的RVN增发操作,这肯定不是我们的锅,赶快反馈给Ravencoin官方团队,一起来解决bug。后来两波团队商量后,决定先暂时关闭Solus Explorer的部分入口,以降低其他攻击者利用该漏洞的可能性,为官方团队解决问题赢得了一定时间。


7月3号,RVN 团队向社区发布了紧急更新。


7月4号,在1,304,352区块上对Ravencoin网络进行了程序修复。


后来,官方解释本次漏洞是由一名黑客(Github 账号:WindowsCryptoDev)提交的恶意 PR引入的 bug 导致。这个PR隐藏之深,表面上看是完善报错信息(实质是一个逻辑漏洞),因此,该PR很快得到官方团队的反馈,并合并到主分支上面。

代码很短,不仔细分析还真看不出来问题。


之前的逻辑:对于asset相关的交易,只要交易的RVN output value不是 0,都会返回 “bad-txns-asset-tx-amount-isn't-zero” 报错信息。


PR修改后的逻辑:表面看起来是为了方便开发者区分具体的报错原因,但是黑客留了一个后门,即没有针对TX_REISSUE_ASSET 进行报错信息优化。这样带来的后果不仅仅是报错信息不可分辨,而是将原本不合法的交易(TX_REISSUE_ASSET 且 RVN output value 不是0)判断为合法的交易,最终导致了 RVN 的增发。


说白了少了一步else的操作。


目前,官方已经对该逻辑漏洞进行了修复,咱们再来看看是怎么修复的,见下图


这位黑客到底是怎么利用自己写的逻辑漏洞来增发的呢?具体详情如下:

1月17号,黑客在Ravencoin主网持续发布TX_ISSUE_ASSET交易,为后续的TX_REISSUE_ASSET攻击提供基础。


5月9号,黑客开始每隔2小时在Ravencoin主网发起一个 TX_REISSUE_ASSET交易,增发500,000 RVN 到自己的地址,该行为一直持续到7月3日,此时黑客察觉到官方已经准备对bug进行修复(此时主网上的 bug 并没有完全修复)。


7月4号,主网上还出现了3笔新的攻击交易,增发了两笔1,000,000 RVN和一笔2,804,398RVN,不过这3 笔攻击交易应该都不是之前的黑客所为。

从Solus Explorer统计来看,最终总增发量为 301,804,400 RVN,超过3.01亿RVN,套现4000多万,一直没有被发现。


其实,整体看来,这个黑客只是求财,他并没有疯狂增发,并且发现官方已发现这个漏洞时,就没有再增发了,不然真得很有可能就让这个币归0了,说白了,还是这个币的持有者们,将会为这4000多万来买单,太难了~~~

关于这种逻辑漏洞,还是出现过不少,一旦遇到,真得很难发现,需要核心开发者把好关才行。

最后,上面这张OWASP TOP 10的官方图,值得你花时间和精力去研究的^_^



 往期推荐 

🔗


“阅读原文”一起来充电吧!
: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存