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

2021-05-09 18:05:35

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

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

攻击细节分析

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

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

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

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

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

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

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

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

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

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

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

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

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

totalETH 函数:

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

work 函数:

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

以上分别是 ibETH 合约中的 totalETH 函数和 work 函数的部分实现。不难发现 totalETH 函数其实就是获取合约的总的 ETH 的数量。而 work 函数,本身是一个 payable 函数,也就是说,用户是可以通过 work 函数来控制 ibETH 合约中的 ETH 数量从而来改变 totalETH 返回的值的。更糟糕的是,work 函数同时还支持调用其他的任意合约。那么整个思路就很清晰了。

攻击流程

1、从 dYdX 中进行闪电贷,借出大量的 ETH;

2、使用一部分的 ETH 充值到 Rari Capital 合约中,此时从 ibETH 获取的比值还是正常的;

3、使用剩余的 ETH 充值到 ibETH 合约中,调用 ibETH 合约的 work 函数,为后续推高 ibETH 合约的 totalETH 的返回值做准备;

4、在 work 函数中同时对 Rari Capital 合约发起提现,由于上一步已经推高 totalETH 值,但是计算的 totalETH()/totalSupply() 的值相对于充值时被拉高,从而使攻击者能从 Rari Capital 中使用等量的 REPT 获取到更多的 ETH。

总结

本次分析下来,主要的原因是协议的不兼容问题,攻击者通过闪电贷和重入的方式,攻击了 Rari Capital,造成了巨大的损失。慢雾安全团队建议在 DeFi 逐渐趋于复杂的情况下,各 DeFi 项目在进行协议间交互时,需要做好协议之间的兼容性,避免因协议兼容问题导致的损失。

【参考链接】

Rari Capital 官方分析:

https://medium.com/rari-capital/5-8-2021-rari-ethereum-pool-post-mortem-60aab6a6f8f9

攻击交易(其中一笔):

https://etherscan.io/tx/0x171072422efb5cd461546bfe986017d9b5aa427ff1c07ebe8acc064b13a7b7be

By:yudan@慢雾安全团队

郑重声明:本文版权归原作者所有,转载文章仅为传播信息之目的,不构成任何投资建议,如有侵权行为,请第一时间联络我们修改或删除,多谢。

推荐文章

暴跌中币价相当坚挺,从HIP、Vaults以及Token模型的角度再谈Hyperliquid

自2014年门头沟事件起,中心化交易平台的腐败与市场操纵问题便始终困扰着Crypto的所有参与者。...

coincaso
277 9个月前

Ondo背靠特朗普与华尔街,RWA迎来爆发?

编者按:Ondo Finance 推出 Layer 1 公链 Ondo Chain,推动 RWA...

coincaso
295 9个月前

今日推荐 | 速览Berachain背后助推器Royco:TVL突破30亿美元,跃居Yield协议第二!

过去一年,DeFi生态简直是“开挂”状态,资金如洪水般涌入,机构疯狂布局,大家都在说:这波赚钱机会...

coincaso
305 9个月前

Uniswap V4 正式上线后 ,有哪些值得关注的创新项目?

编者按:文章介绍了 Uniswap V4 的创新性功能,重点阐述了 Hooks 的模块化特性,使开...

coincaso
297 9个月前

波场TRON行业周报:“就职典礼”利好出尽,TRX成WLFI战略储备之一

一.前瞻1. 宏观层面总结以及未来预测市场普遍预计,美联储将在1月30日的会议上决定维持当前的联邦...

coincaso
287 10个月前

来火币HTX过肥年:春节乐翻天,$60万红包抢不停,更多新春福利待领取

春节将至,火币HTX携手波场TRON生态推出“春节乐翻天,$60万红包抢不停”活动,用数字红包传递...

coincaso
277 10个月前