2021年5月8日,據鏈聞消息,以太坊收益聚合協議RariCapital因集成了AlphaFinance產生了漏洞,損失近1500萬美元。事后,RariCapital官方發布了事故分析報告,分析了此次事故的主要原因。慢霧安全團隊在官方分析的基礎上,結合慢霧安全團隊對此次事件的深入分析,進一步解讀本次安全事故的原因。
攻擊細節分析
本次攻擊發生在RariCapital的RariManger合約中,整個過程下來就是攻擊者首先通過閃電貸從dYdX中借出巨量資金,然后不停的重復調用RariManger合約中的deposit和withdraw函數,完成獲利。如下圖:
“字母哥”NFT球員卡以約18.6萬美元價格在Sorare NBA成交,創該平臺迄今最高交易記錄:金色財經報道,據體育NFT平臺 Sorare數據顯示,NBA 雄鹿隊球星“字母哥”揚尼斯·阿德托昆博(Giannis Antetokounmpo)的 NFT 球星卡以 113.888 ETH 的價格成交,約合 18.6 萬美元,創下 Sorare NBA 平臺迄今為止的最高交易記錄。另據 Cryptoslam 數據顯示,Sorare 平臺當前總交易額已達到 5.44 億美元,交易總量約為 6,107,010 筆。[2023/2/6 11:49:12]
那么用戶是如何通過deposit和withdraw這兩個操作獲利的呢?我們需要分析對應的函數:
LooksRare:OpenSea在Moonbirds交易中通過高收費獲利150萬美元:金色財經報道,4 月 17 日,NFT市場LooksRare在其社交媒體賬戶上指責OpenSea在“像素貓頭鷹” NFT項目Moonbirds交易中收費過高。此前Moonbirds公開鑄造的7875枚NFT中已全部售罄,并在過去24小時內創造了超過1.1億美元的交易額。LooksRare指出,Moonbirds交易量已經達到2萬枚ETH,這意味著OpenSea獲得了高達150萬美元的費用收入,如果相同的交易量發生在LooksRare上,不僅可以幫助賣家節省30萬美元,而且賣家和買家還能賺取價值70萬美元的LOOKS Token。[2022/4/17 14:29:53]
以上是deposit函數的部分邏輯,首先deposit函數本身會調用內部的_depositTo函數,然后會再次調用getFundBalance函數來獲取合約的余額。getFundBalance函數最終是會調用到RariController合約的getBalance函數去獲取余額。最后是通過RariController合約中的AlphaPoolController庫的getBalance函數獲取余額。如下圖:
Rarible完成1420萬美元A輪融資 將在Flow上推出新的NFT市場:基于以太坊的NFT數字收藏和交易平臺Rarible完成由洛克菲勒家族風險基金Venrock和區塊鏈風險投資公司CoinFund領投的1420萬美元A輪融資,風險投資公司01Advisors也參與本輪融資。所籌資金將用來招聘新的團隊成員并發展平臺,與此同時Rarible也正在Flow區塊鏈上推出一個全新的NFT市場。(Coindesk)[2021/6/23 0:01:19]
流程上略微復雜,用圖來展示大概就是下面這樣:
從上面的分析不難發現,Rari合約最終是用到了AlphaFinance項目的ibETH合約的totalETH函數獲取合約的余額,目的是為了根據totalETH和totalSupply的比值計算出Rari合約真正的ETH余額。deposit函數是根據用戶的充值ETH的數量和比值計算要發放給用戶的REPT數量,而withdraw函數的公式也大同小異,同樣需要通過getBalance函數獲取合約的ETH余額并計算比值,然后根據用戶的REPT代幣的余額和比值計算需要返還給用戶的ETH的數量。但是問題恰恰出在這個獲取ETH余額的公式上。
Alpha Finance Lab首席工程師:Rari Capital損失約1000萬美元:Alpha Finance Lab首席工程師Nipun表示,Rari Capital上的REPT-ETH兌換,依賴Homora Bank的ibETH:ETH匯率,可能在`work`函數調用期間不一致。攻擊者操縱并利用匯率,每次凈獲得差價。Rari Capital損失2600 ETH(約1000萬美元),Alpha Homora資金安全。根本原因僅在于bETH:ETH匯率,已重啟用Alpha Homora。
此前消息,DeFi智能投顧協議Rari Capital在推特上表示,其ETH資金池出現了一個因集成Alpha Finance Lab協議而導致的漏洞,并遭受攻擊。[2021/5/9 21:40:54]
根據官方描述,從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充值到RariCapital合約中,此時從ibETH獲取的比值還是正常的;
3、使用剩余的ETH充值到ibETH合約中,調用ibETH合約的work函數,為后續推高ibETH合約的totalETH的返回值做準備;
4、在work函數中同時對RariCapital合約發起提現,由于上一步已經推高totalETH值,但是計算的totalETH()/totalSupply()的值相對于充值時被拉高,從而使攻擊者能從RariCapital中使用等量的REPT獲取到更多的ETH。
總結
本次分析下來,主要的原因是協議的不兼容問題,攻擊者通過閃電貸和重入的方式,攻擊了RariCapital,造成了巨大的損失。慢霧安全團隊建議在DeFi逐漸趨于復雜的情況下,各DeFi項目在進行協議間交互時,需要做好協議之間的兼容性,避免因協議兼容問題導致的損失。
RariCapital官方分析:
https://medium.com/rari-capital/5-8-2021-rari-ethereum-pool-post-mortem-60aab6a6f8f9
攻擊交易(其中一筆):
https://etherscan.io/tx/0x171072422efb5cd461546bfe986017d9b5aa427ff1c07ebe8acc064b13a7b7be
By:慢霧安全團隊
親愛的CoinW用戶: CoinW將于10月15日20:00開啟MFCC5折搶購,平臺所有完成實名認證的用戶,提前購買CWT即可參與本次搶購.
1900/1/1 0:00:00這幾天,比特幣一直在徘徊震蕩,始終無法重回60000美元,顯而易見主流幣的上漲趨勢明顯減弱,在主流幣一片整理震蕩的行情中,一些DeFi類項目卻蹭蹭地往上漲,讓我不得不改變賽道去DeFi看看.
1900/1/1 0:00:00親愛的CoinW用戶: 幣贏超級問答第16期將于10月30日18:00正式舉行,本次直播請到的嘉賓是Cortex項目團隊,分享主題為“全方位解讀國家級央企在區塊鏈領域的研究與探索”.
1900/1/1 0:00:00Bitget全球站用戶:Bitget已完成BFT/USDT幣幣交易對升級并恢復交易服務。感謝您對Bitget的關注與支持! 詳見 Bitget團隊 2021年5月8日 中文區用戶訪問:www.b.
1900/1/1 0:00:00親愛的用戶: HomiEx將于2021年5月11日15:00:00(GMT8)上線BTC/USDC,ETH/USDC交易對.
1900/1/1 0:00:00親愛的CoinW用戶: Coinw現已完成ONT、VET的持幣空投,同時ETC上線活動、半幣江山及池瓜群眾的活動獎勵也已發放完畢.
1900/1/1 0:00:00