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

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

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

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

观点:加密货币总市值突破1万亿美元,将使新的机构投资者开始FOMO:比特币、ETH以及DeFi代币价格最近上涨,被归因于新的政府刺激措施,以及散户投资者在比特币2017年牛市和随后的崩盘三年后重返这个领域。

瑞士数字资产基础设施初创公司Metaco副总裁Seamus Donoghue表示,“虽然刺激措施有望出台,但宏观背景对比特币等风险资产仍将非常有利,而且随着谷歌搜索量最近飙升,散户投资者也开始加大加密投资。这意味着像以太坊、Polkadot、Cardano和DeFi代币这样的山寨币现在可能开始跑赢大盘。加密货币总市值突破1万亿美元,这将使新的机构投资者开始担心FOMO(担心错失良机),这反过来又会让流动性较低的养老基金和捐赠基金关注这一新兴资产类别的投资机会。”(福布斯)[2021/1/16 16:20:14]

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

Zilliqa宣布NextID为官方数字认证提供商:Zilliqa宣布与新加坡的数字身份管理专家NextID达成合作。作为Zilliqa官方可验证区块链的认证发放提供商,NextID基于网络的证书和可收集的认证发放服务NextCert?将在Zhive教育研讨会与IHL(高等教育机构)、职业课程和即将到来的营销或筹款活动中使用。[2020/9/2]

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

从上面的分析不难发现,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@慢雾安全团队

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

区块博客

Uniswap美元全球储备货币地位遭削弱 比特币能否对其构成严峻挑战?

自第二次世界大战和布雷顿森林会议结束以来,美元一直是全球储备货币。根据国际货币基金组织(IMF)的数据,如今,超过59%的外国银行储备以美元计价。(注:布雷顿森林会议,是二战时期召开的一次会议,主要讨论世界经济问题。) 然而,美元作为全球储备货币的地位最近有些动摇。

TRXHODL 仍然是目前市场的主旋律?

摘 要:本周链上交易量和费用都达到了历史新高,比特币和以太坊的链上数据都表明,随着加密货币交易越来越成熟,并且网络影响力越来越大,加固了持有这两种资产的信念。 市场概况 比特币价格本周从低点反弹,开盘价为49,077美元,最高价达为58,396美元。

MANA中证观察:炒币风险巨大 从严监管大势所趋

近段时间,比特币再次走出疯涨之后又暴跌的“过山车”行情。在价格频繁暴涨暴跌,反映投机炒作异常狂热之余,围绕虚拟货币展开的违法犯罪活动亦不断被曝光,促使各方进一步审视对虚拟货币的监管问题。事实上,加强对虚拟货币交易监管正在形成更广泛的共识。最近,比特币交易再次遭到一些大型商业银行的“封堵”,可能蕴含从严监管新信号。

比特币最新价格HECO正式启动全球节点竞选 开启去中心化治理新时代

为了更进一步提高去中心化程度,更好地保障网络安全和稳定运行,5月7日,HECO宣布正式启动全球节点竞选,开启HECO去中心化治理新时代。 2020年12月21日,HECO主网正式上线并同步开启“火种”阶段(HECO分为火种、星火、烈焰、燎原四个阶段),按照规划,节点竞选也预备在该阶段正式启动。

[0:0ms0-6:887ms