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@慢霧安全團隊

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

推薦文章

逆市拉盤,一文速覽Depin協議Grass為何暴漲

在加密市場近期震蕩中,Grass代幣($GRASS)以其獨特的表現引發了市場的廣泛關注。尤其是在過...

coincaso
6 1天前

從大虧8.68億到協議重生:Ethena的困境與破局

引言Ethena是本輪周期少有的現象級DeFi項目,其代幣上线後流通市值一度超過20億美金(對應F...

coincaso
13 3天前

GLIF代幣空投:Filecoin最大DeFi協議开啓一億枚代幣的分發!

Glif是Filecoin上最大的DeFi協議,正在推出其原生代幣。總計將向用戶空投1億枚GLIF...

coincaso
22 6天前

牛熊轉換:加密貨幣的PvP與PvE模式解析

“畢業後,你會有一段短暫的時間來進行超高風險投資以獲得精英地位,否則你就會終身成為工資奴隸。” -...

coincaso
25 6天前

LRT 之爭:在劇烈波動中賺取 AVS 獎勵

前言比特幣重回 7W,行情波動加劇,再質押重回投資者視野,幣圈真正賺錢的時候,一定是在低風險高收益...

coincaso
26 1周前

World Liberty Financial能否改變穩定幣遊戲規則?

特朗普加密項目“World Liberty”計劃發行穩定幣,消息人士稱據悉,特朗普加密項目計劃推出...

coincaso
25 1周前