宇宙链 宇宙链
Ctrl+D收藏宇宙链

Rari 被黑事故分析:开心做聚合 无奈被攻击

作者:

时间:1900/1/1 0:00:00

2021年5月8日,据链闻消息,以太坊收益聚合协议RariCapital因集成了AlphaFinance产生了漏洞,损失近1500万美元。事后,RariCapital官方发布了事故分析报告,分析了此次事故的主要原因。慢雾安全团队在官方分析的基础上,结合慢雾安全团队对此次事件的深入分析,进一步解读本次安全事故的原因。

攻击细节分析

本次攻击发生在RariCapital的RariManger合约中,整个过程下来就是攻击者首先通过闪电贷从dYdX中借出巨量资金,然后不停的重复调用RariManger合约中的deposit和withdraw函数,完成获利。如下图:

NFT交易市场Rarible将市场构建器扩展至Polygon网络:金色财经报道,NFT交易市场Rarible将市场构建器扩展至Polygon网络,在Polygon上铸造NFT的创作者可以免费创建自己的特定NFT系列品牌,还可以利用该平台的原生聚合工具涵盖在其他二级市场上市的NFT。[2023/1/19 11:20:16]

那么用户是如何通过deposit和withdraw这两个操作获利的呢?我们需要分析对应的函数:

以上是deposit函数的部分逻辑,首先deposit函数本身会调用内部的_depositTo函数,然后会再次调用getFundBalance函数来获取合约的余额。getFundBalance函数最终是会调用到RariController合约的getBalance函数去获取余额。最后是通过RariController合约中的AlphaPoolController库的getBalance函数获取余额。如下图:

Rarible Protocol已集成Solana NFT,将在未来几周上线Rarible NFT市场:4月14日消息,Rarible Protocol已集成Solana NFT,Solana NFT将在未来几周上线Rarible NFT市场。Rarible Protocol还宣布为Solana NFT项目Degenerate Ape Academy (DAA) 创建一个自定义市场。(Decrypt)[2022/4/14 14:24:55]

流程上略微复杂,用图来展示大概就是下面这样:

从上面的分析不难发现,Rari合约最终是用到了AlphaFinance项目的ibETH合约的totalETH函数获取合约的余额,目的是为了根据totalETH和totalSupply的比值计算出Rari合约真正的ETH余额。deposit函数是根据用户的充值ETH的数量和比值计算要发放给用户的REPT数量,而withdraw函数的公式也大同小异,同样需要通过getBalance函数获取合约的ETH余额并计算比值,然后根据用户的REPT代币的余额和比值计算需要返还给用户的ETH的数量。但是问题恰恰出在这个获取ETH余额的公式上。

NFT市场LooksRare空投申领延长:1月18日消息,NFT市场LooksRare空投申领延长,本周目标是交付:分类、用户NFT收藏分类、修复“Buy now only”、修复价格过滤器、修复过时订单。[2022/1/18 8:56:02]

根据官方描述,从ibETH合约获取的totalETH函数获取的值是可以被用户操控的。以下是官方原文:

根据官方的描述,用户可通过ibETH合约的work函数操控totalETH函数返回的值,导致Rari整个价值计算公式崩溃。我们分别分析ibETH的work函数和totalETH函数:

totalETH函数:

Rarible推出可简化NFT项目上线的开源跨链工具Rarible Protocol:8月13日消息,基于以太坊的NFT数字收藏和交易平台Rarible推出为NFT打造的开源跨链工具Rarible Protocol,用以简化NFT项目和创意的市场化过程。Rarible Protocal目前已经在以太坊上完成部署,未来短时间内将在Flow和Polygon上部署。[2021/8/13 1:53:01]

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:慢雾安全团队

标签:ETHRARIARITALweth币等于多少人民币RARI币China GranariesTAL RUNE - Rune.Game

Gate交易所热门资讯
关于U本位永续合约最小价格精度调整公告(2021-05-07)

亲爱的用户:为提升市场的有效流动性和交易体验,币安将于2021年05月11日11:30调整下表中U本位永续合约交易对的最小价格精度.

1900/1/1 0:00:00
第三次大波动之后 市场数据图解

原文标题:《市场观察:第三次大波动之后》受五月前后大量利好与利空信息释出刺激,市场波动率再度从50左右抬升至80以上的高水平,迎来今年以来第三次波动率高峰;随后随着比特币安然度过4月30日的难关,在利好消息推动下,波动率出现下降.

1900/1/1 0:00:00
为何英格兰银行行长Andrew Bailey对加密货币不屑一顾

周四,英国央行行长AndrewBailey在瑞士达沃斯举行的世界经济论坛上对加密货币提出了不信任的声明,称投资者必须做好准备承受最终全部的投资损失.

1900/1/1 0:00:00
互联网计算机正式启动,将公共互联网转变为去中心化的全球计算机

摘要: 该重大里程碑意味着,现在互联网可以充当去中心化的全球计算机——其标志是所有互联网计算机的源代码都发布到了公有领域.

1900/1/1 0:00:00
Lega Serie A与NFT一起纪念历史性的Coppa Italia决赛

意大利主要职业足球联赛的管理机构LegaSerieA将发布特别系列的NFT,以纪念意大利杯今年的最后一场比赛。2021年意大利杯决赛将是尤文图斯和亚特兰大首次为冠军争夺战而准备的历史性赛事.

1900/1/1 0:00:00
Punk. Network举办《伟大的毕达哥拉斯》艺术展

《伟大的毕达哥拉斯》艺术展简介本次艺术展是由Punk.Network与在3画廊携手举办的数字艺术节,线下展览将于5.9-5.27在北京塑三文化产业园开展.

1900/1/1 0:00:00