区块见闻 区块见闻
Ctrl+D收藏区块见闻

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

作者:

时间:

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

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

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

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

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

从上面的分析不难发现,Rari 合约最终是用到了 Alpha Finance 项目的 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 充值到 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@慢雾安全团队

标签:ETHTALRARIARIETHB价格Digital Currency AggregateFERRARIHEARIFYAI币

欧易交易所app官网下载热门资讯
Meme大街掀起的Fomo:Vitalik VS Shiba

几个月前,Doge在整个镇子中独领风骚,而现在则要拿着放大镜才能找到他。 新的资金可以带来新的流动性。Doge曾希望这种流动性能将街道上的脏东西清理干净。 但他弄错了。 且大错特错。 Doge已经看惯了各种徒;他从2013年就开始在Meme大街上工作。但如今的这些Copycat收藏者却不是同一类人。

以太坊 Layer 2 资产桥方案解析:Arbitrum、zkSync 与 DeGate Bridge

以太坊 Layer 2 生态将迎来百花齐放的局面,如何在各 Layer 2 之间以及与 Layer 1 通信或成为一个核心问题。 以太坊自 2015 年诞生以来,快速成长为最活跃、最繁忙的区块链,无论是从应用的丰富性、链上的资产规模还是从交易量、安全性等指标看,以太坊都是当前无可争议的公链之王。

第三次大波动之后 市场数据图解

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

以太坊伦敦升级将把难度炸弹推迟至12月

以太坊开发者周五同意推迟一个“困难炸弹”,如果不加以处理,这个难度炸弹将在今年夏天开始减慢以太坊网络的速度。 以太坊“难度炸弹”是以太坊开发人员 2015 年嵌入的一段代码,通过逐步增加区块链挖矿难度,从而人为减慢以太坊发行速度。这一机制是为了使以太坊向权益证明(PoS)机制算法的巨大转变而设计的。

5.7晚间行情:BTC有拉升意向 大概率有新一轮行情

文章系金色财经专栏作者币圈北冥供稿,发表言论仅代表其个人观点,仅供学习交流!金色盘面不会主动提供任何交易指导,亦不会收取任何费用指导交易,请读者仔细甄别防上当。据欧易OKEx的数据显示,当前BTC/USDT现货报价为 56424,24小时涨幅/跌幅为 -2.58 %。

共享算力平台Pekka自主研发“诚实性共识技术POH”专利获美国专利局认证通过

2021年4月6日,由Pekka研究团队撰写的美国专利- “Methods and apparatus for verifying processing results and/or taking corrective actions in response to a detected invalid result  (验证处理结果及针对检测。