原文标题:《别再复制 Compound 的代码了》 原文作者:Jackson[1] 前段时间看 Compound[2] 的代码,发现两个可能影响资金安全的漏洞。 漏洞一 发现 Compound 的一个严重漏洞[3] 这个漏洞的主要原因是 Compound 采用的这种资金池净值的算法可以被攻击,攻击者可以在资金池份额很小时,恶意转入一定量资金导致净值达到一个极大的值,从而让后面存入资金时,份额=资金/份额,整除后结果为 0,也就是说用户存入资金确得不到份额!然后攻击者就可以取回份额,盗走用户的资金。 这个漏洞的利用条件比较苛刻,基本上只有在创建资金池的时候才有攻击的可能,但是,对于合约这种极其关键的东西,应该严谨对待,不能因为难以利用就置之不理,特别是这个漏洞要堵上是非常简单的。 因此给 Compound 的漏洞赏金计划邮箱发了一封邮件,告知了这个问题,但是至今没有收到回复。 担心是邮件没有收到,我又联系了 CertiK,希望通过他们来联系上 Compound,但是当 CertiK 表示这个漏洞他们已经知道了,并说这个漏洞很难被利用,可以通过运营手段规避。想想确实是这样,这个漏洞虽然可能被利用,但是难以被利用,不必大惊小怪。 漏洞二 发现 Compound 的第二个严重漏洞[4] 这个漏洞则似曾相识,基本逻辑还是回调、重入,但是漏洞确比第一个更加严重,而且也容易被利用一些,只要有带钩子的 Token,就可以攻击! 于是我第一时间联系 CertiK,然后他们的回复依然是,这个漏洞他们已经发现了! 这次我就不是很理解了,后果如此严重,又比较容易被利用的漏洞,为什么被大家发现了还能够存在?而且堵上这个漏洞只需要调换一下两句代码的顺序就可以了,这样简单却能解决大问题的事情,却没有人做?难道仅仅是因为 Compound 没有带钩子的 Token? 这让我对漏洞的认知产生了怀疑!第一次在本站发布这个漏洞后没多久,觉得内容比较敏感,我就把主要内容都删除了。 漏洞终于被利用 然而,漏洞还是被利用了。March-15-2022 06:28:40 PM +8 UTC,Hundred Finance 遭受攻击,黑客获利 2363 ETH,总价值超过 4000 万人民币。Hundred Finance 代码源自 Compound。利用的漏洞和上文中的第二个思路相同。事实上,黑客可以更狠一些,攻击的时候同时调用 exitMarket() 退出借贷市场,从而攻击者赎回、借款时,欠款会被全部忽略! 反思 通过这段时间对 Compound 代码的阅读,以及关于漏洞的沟通过程,都让我比较吃惊,他们对于漏洞的态度竟然如此漠然!是什么原因导致了这样的局面,Compound,审计公司分别是如何考虑的?无从知晓。 这或许就是币圈基本上过几天就要发生一起攻击事件的主要原因! 代码是别人的,但是复制过来后,漏洞却是需要自己承受的,如此局面下,我们能够做的,就是严谨对待自己的项目和代码,因为出了问题后,Compound 和审计公司都不会为你负责,可能还觉得你活该! 参考资料 [1]jackson:https://learnblockchain.cn/people/245 [2]Compound:https://learnblockchain.cn/article/3167 [3] 发现 Compound 的一个严重漏洞 | 登链社区 | 深入浅出区块链技术:https://learnblockchain.cn/article/3591 [4] 发现 Compound 的第二个严重漏洞 | 登链社区 | 深入浅出区块链技术:https://learnblockchain.cn/article/3724 原文链接 —- 编译者/作者:区块律动BlockBeat 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
别再复制Compound的代码了
2022-03-24 区块律动BlockBeat 来源:区块链网络
LOADING...
相关阅读:
- Compound在审计中发现并修复TUSD合约相关严重漏洞,防止了数百万美元可2022-03-22
- 算法稳定币协议 OlympusDAO 将推出 V2 版本并启动链上治理2021-10-15
- Compound代码更新事故2021-10-09
- Compound 中的错误规模又增加了 6700 万美元2021-10-04
- DeFi Compound 可能因错误分发代币而损失 9000 万美元2021-10-01