月亮链 月亮链
Ctrl+D收藏月亮链
首页 > Bitcoin > 正文

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

作者:

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

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

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

LooksRare:将推出Moonshot项目,并将定期回购LOOKS:5月27日消息,NFT 市场 LooksRare 发文称,将在 4 至 6 周内推出 Moonshot 项目,它将为 LooksRare 协议产生费用,并将用其中一大部分费用从市场上定期回购 LOOKS 代币。目前,LooksRare 已从前 5 次 Raffles 中回购超过 55 万枚 LOOKS(超过 4.5 万美元),回购的代币将存入 LooksRare 财库。[2023/5/27 9:45:16]

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

Twitter用户爆料:NFT交易市场Rarible或存在授权合约风险:11月30日消息,据Twitter用户爆料,NFT交易市场Rarible可能存在授权合约风险,在2019年底-2020年授权过Kyber Network 1155 Wrapper合约的用户需尽快解除授权,以免发生风险事件。[2022/11/30 21:12:15]

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

Sorare发布基于NFT的NBA梦幻篮球游戏测试版:10月18日消息,NFT体育游戏开发商Sorare宣布推出基于NFT的NBA梦幻篮球游戏测试版,玩家可以使用代表NBA球星的NFT创建和管理球队,这款游戏基于以太坊区块链开发,将发行5,000枚NFT限量卡、1000枚稀有卡、100枚超级稀有卡、以及1张独特卡。

截止目前,Sorare旗下NFT游戏已经覆盖篮球、足球和棒球三大运动。(Venturebeat)[2022/10/18 17:31:09]

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

Rari Capital与OlympusDAO计划将TRIBE与gOHM进行代币交换:3月21日消息,稳定币DeFi智能投顾Rari Capital与算法稳定币协议OlympusDAO达成DAO协议,计划将374万枚TRIBE和577.18枚gOHM进行代币交换,同时OlympusDAO将FEI纳入财政部金库,Fei协议将填补20%的债券容量,Olympus将被纳入Tribe Turbo。[2022/3/21 14:09:18]

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

NFT作品“Right-click and Save As guy”以1600 ETH成交,创SuperRare最高销售记录:金色财经报道,加密艺术家XCOPY的NFT作品Right-click and Save As guy在SuperRare平台上以1600 ETH的价格成交,约合702.2万美元,卖家为/img/202281245932/6.jpg" />

根据官方的描述,用户可通过 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@慢雾安全团队

标签:ETHTALRARIARIEthereum ApexBitalgoRARI价格Shibarium Perpetuals

Bitcoin热门资讯
区块链:金色早报 | 数字人民币公测升级 网商银行(支付宝)正式入列_区块链dapp开发白富美

头条▌数字人民币公测升级 网商银行(支付宝)正式入列数字人民币子钱包再度扩容,国内首批互联网银行之一的网商银行成为尝鲜者,成为第七家参与公测试点的商业银行.

1900/1/1 0:00:00
SWAP:解析一季度DEX表现:PancakeSwap崛起 SushiSwap萎靡了?_CATSHIRA价格

DEX交易量在2021年第一季度出现了抛物线式的增长。本季度DEX交易量达到2170亿美元以上,比2020年第四季度增长236%,比2020年第一季度增长高达8012%.

1900/1/1 0:00:00
比特币:我们处在比特币牛市的哪个阶段?_加密货币总市值最高多少

曾经的价格周期模型逐渐失效。从2020年10月开始,比特币月线连续六连阳,这种上涨在比特币历史上,甚至在传统金融世界都是少有的.

1900/1/1 0:00:00
BTC:2021年以来 55个机构及个人已接受比特币等支付_ethereal词源

不完全统计,自2021年以来,共有55个公司、团体及个人宣布支持比特币等加密货币作为支付手段。下面我就一起来看看到底是哪些机构和个人!1月9日,Lamborghini Newport Beach.

1900/1/1 0:00:00
STA:金色DeFi日报 | 华纳音乐将为旗下明星开发虚拟形象和虚拟道具NFT_Defi Tiger

1.DeFi总市值:1307.49亿美元 市值前十币种排名数据来源DeFiboxDeFi总市值数据来源:Coingecko2.过去24小时去中心化交易所的交易量:34.

1900/1/1 0:00:00
区块链:手把手教你注册以太坊ENS_AIN

打开以太坊ens注册网页:https://app.ens.domains/ 连接你的以太坊钱包(小狐狸),检索你想注册的域名.

1900/1/1 0:00:00