header-langage
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
掃碼下載APP
Partnered With:

Rari被黑事故分析

閱讀本文需 15 分鐘
Rari Capital 因集成了 Alpha Finance 產生了漏洞,損失近 1500 萬美元。
原文標題:《開心做聚合,無奈被攻擊——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


原文鏈接


歡迎加入律動 BlockBeats 官方社群:

Telegram 訂閱群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方帳號:https://twitter.com/BlockBeatsAsia

举报 糾錯/舉報
選擇文庫
新增文庫
取消
完成
新增文庫
僅自己可見
公開
保存
糾錯/舉報
提交