2021年5月8日,据链闻消息,以太坊收益聚合协议RariCapital因集成了AlphaFinance产生了漏洞,损失近1500万美元。事后,RariCapital官方发布了事故分析报告,分析了此次事故的主要原因。慢雾安全团队在官方分析的基础上,结合慢雾安全团队对此次事件的深入分析,进一步解读本次安全事故的原因。
攻击细节分析
本次攻击发生在RariCapital的RariManger合约中,整个过程下来就是攻击者首先通过闪电贷从dYdX中借出巨量资金,然后不停的重复调用RariManger合约中的deposit和withdraw函数,完成获利。如下图:
SuperRare宣布OSF成为6月RarePass空投艺术家:金色财经报道,NFT市场SuperRare在官推宣布OSF成为6月RarePass空投艺术家,OSF又名 Ovie Faruq,前华尔街交易员,后来成为 Web3/NFT 投资者、建设者和艺术家,他@CanaryLabsXYZ、@DegenzNFT和@rektguyNFT、以及 Mando (?@rektmando?)的共同创建者,据悉OSF的NFT系列将于6月7日发布,希望参与的用户必须将RarePass NFT下架才能获得空投,所有RarePass艺术品也可以在空投后支持SuperRare的二级市场上交易。[2023/6/6 21:18:29]
勒布朗·詹姆斯“LeBron 1/1 Unique Card”以近7万美元成交价被拍卖,创Sorare NBA第三高交易记录:金色财经报道,勒布朗·詹姆斯“LeBron 1/1 Unique Card”NFT球星卡以69,165美元的成交价在Sorare被拍卖,创造了Sorare NBA平台迄今为止第三高NFT交易记录,仅次于2月初成交的NBA雄鹿队球星“字母哥”扬尼斯·阿德托昆博的NFT球星卡(18.6万美元)和安东尼·戴维斯的NFT球星卡。[2023/2/15 12:07:17]
那么用户是如何通过deposit和withdraw这两个操作获利的呢?我们需要分析对应的函数:
LooksRare明日进行数据库升级,期间暂停交易:12月12日消息,LooksRare表示,12月13日UTC时间7:00AM至4:00PM之间将对数据库进行升级。升级期间,LooksRare将进入维护模式,暂停交易。[2022/12/13 21:40:13]
以上是deposit函数的部分逻辑,首先deposit函数本身会调用内部的_depositTo函数,然后会再次调用getFundBalance函数来获取合约的余额。getFundBalance函数最终是会调用到RariController合约的getBalance函数去获取余额。最后是通过RariController合约中的AlphaPoolController库的getBalance函数获取余额。如下图:
NFT市场Rarible已上线Solana NFT:7月18日消息,NFT市场Rarible官方发推文称,Solana生态NFT系列已可以在Rarible上上架和交易。上线首月,Solana NFT的交易将免除平台费。
此前消息, Rarible已上线以太坊、Flow、Tezos和Polygon。[2022/7/18 2:20:07]
流程上略微复杂,用图来展示大概就是下面这样:
软银领投的NFT梦幻足球游戏Sorare交易量突破50万笔:9月30日消息,据最新数据显示,NFT梦幻足球游戏Sorare交易量已突破50万笔,本文撰写时为508,760笔,交易总额接近10亿美元(93,459,100美元)。上周二,Sorare以43亿美元的估值完成6.8亿美元B轮融资,领投方为日本投资巨头软银集团,参投方包括Atomico、D1Capital、BessemerVentures、Eurazeo、IVP、Hillhouse、Liontree、Accel、Benchmark、Headline、以及包括Gerard Piqué、Antoine Griezmann、Rio Ferdinand和César Azpilicueta在内的多名球星。[2021/9/30 17:16:57]
从上面的分析不难发现,Rari合约最终是用到了AlphaFinance项目的ibETH合约的totalETH函数获取合约的余额,目的是为了根据totalETH和totalSupply的比值计算出Rari合约真正的ETH余额。deposit函数是根据用户的充值ETH的数量和比值计算要发放给用户的REPT数量,而withdraw函数的公式也大同小异,同样需要通过getBalance函数获取合约的ETH余额并计算比值,然后根据用户的REPT代币的余额和比值计算需要返还给用户的ETH的数量。但是问题恰恰出在这个获取ETH余额的公式上。
根据官方描述,从ibETH合约获取的totalETH函数获取的值是可以被用户操控的。以下是官方原文:
根据官方的描述,用户可通过ibETH合约的work函数操控totalETH函数返回的值,导致Rari整个价值计算公式崩溃。我们分别分析ibETH的work函数和totalETH函数:
totalETH函数:
work函数:
以上分别是ibETH合约中的totalETH函数和work函数的部分实现。不难发现totalETH函数其实就是获取合约的总的ETH的数量。而work函数,本身是一个payable函数,也就是说,用户是可以通过work函数来控制ibETH合约中的ETH数量从而来改变totalETH返回的值的。更糟糕的是,work函数同时还支持调用其他的任意合约。那么整个思路就很清晰了。
攻击流程
1、从dYdX中进行闪电贷,借出大量的ETH;
2、使用一部分的ETH充值到RariCapital合约中,此时从ibETH获取的比值还是正常的;
3、使用剩余的ETH充值到ibETH合约中,调用ibETH合约的work函数,为后续推高ibETH合约的totalETH的返回值做准备;
4、在work函数中同时对RariCapital合约发起提现,由于上一步已经推高totalETH值,但是计算的totalETH()/totalSupply()的值相对于充值时被拉高,从而使攻击者能从RariCapital中使用等量的REPT获取到更多的ETH。
总结
本次分析下来,主要的原因是协议的不兼容问题,攻击者通过闪电贷和重入的方式,攻击了RariCapital,造成了巨大的损失。慢雾安全团队建议在DeFi逐渐趋于复杂的情况下,各DeFi项目在进行协议间交互时,需要做好协议之间的兼容性,避免因协议兼容问题导致的损失。
RariCapital官方分析:
https://medium.com/rari-capital/5-8-2021-rari-ethereum-pool-post-mortem-60aab6a6f8f9
攻击交易(其中一笔):
https://etherscan.io/tx/0x171072422efb5cd461546bfe986017d9b5aa427ff1c07ebe8acc064b13a7b7be
By:yudan@慢雾安全团队
在德国,新立法将使最受欢迎的机构投资基金经理将其20%的资金分配给加密资产,新法规将于7月1日生效.
1900/1/1 0:00:00来源:财联社作者:史正丞4月28日,摩根大通、星展银行和淡马锡发布公告称将组建科技公司Partior,并设立开放区块链平台促进支付业务的数字化转型.
1900/1/1 0:00:00以太坊即将大规模迁移到Layer2。随着许多协议从以太坊基础层转移到OptimisticRollups和与EVM兼容的zkRollups,许多人希望我们最终可以使链上gas费用可控.
1900/1/1 0:00:00要点总结1.?$14万亿成交量?2021年第一季度,TokenInsight共追踪51家涉及永续合约业务的数字资产交易所相关交易数据,数字资产永续合约成交量报$14.32万亿.
1900/1/1 0:00:00公链需要去妥协适应大众,勇敢进入新的市场进而带动更多创新和商业模式。内卷的公链们随着行业发展,公链技术和应用模式均发展出了多个不同路线,基于这些路线,新的公链主网几乎每隔几周就会启动一个,市场竞.
1900/1/1 0:00:00来源:火星财经本文刊发于《清华金融评论》2021年3月刊文/上海发展研究基金会副会长兼秘书长乔依编者按目前,全球大多数中央银行也已开展积极探索.
1900/1/1 0:00:00