2021年5月8日,據鏈聞消息,以太坊收益聚合協議RariCapital因集成了AlphaFinance產生了漏洞,損失近1500萬美元。事后,RariCapital官方發布了事故分析報告,分析了此次事故的主要原因。慢霧安全團隊在官方分析的基礎上,結合慢霧安全團隊對此次事件的深入分析,進一步解讀本次安全事故的原因。
攻擊細節分析
本次攻擊發生在RariCapital的RariManger合約中,整個過程下來就是攻擊者首先通過閃電貸從dYdX中借出巨量資金,然后不停的重復調用RariManger合約中的deposit和withdraw函數,完成獲利。如下圖:
NBA盧卡·東契奇NFT球星卡以約7.7萬美元價格在Sorare成交:金色財經報道,據Web3游戲平臺Sorare數據顯示,NBA達拉斯獨行俠隊球星盧卡·東契奇(Luka Don?i?)的1/1 Unique球星卡已經以40.444 ETH價格成交,約合76,800美元,成為過去幾個月中1/1 Unique NBA球星卡銷量第4高的一張。交易數據顯示,這張NFT球星卡的買家是BellaMa,目前擁有26張1/1 Unique NBA球星卡,包括杰森·塔圖姆、安東尼·愛德華茲、詹姆斯·哈登、喬什·吉迪、斯蒂芬·庫里和達米安·利拉德等。[2023/4/6 13:47:55]
那么用戶是如何通過deposit和withdraw這兩個操作獲利的呢?我們需要分析對應的函數:
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]
以上是deposit函數的部分邏輯,首先deposit函數本身會調用內部的_depositTo函數,然后會再次調用getFundBalance函數來獲取合約的余額。getFundBalance函數最終是會調用到RariController合約的getBalance函數去獲取余額。最后是通過RariController合約中的AlphaPoolController庫的getBalance函數獲取余額。如下圖:
LooksRare已經產生超過83億美元的清洗交易:金色財經報道,NFT分析公司CryptoSlam今天報告說,它已經從LooksRare發現了價值超過83億美元的清洗交易,占到了迄今為止市場上交易量的絕大部分。大部分洗盤交易來自免版稅的收藏品,這意味著賣家不必向創作者支付二次銷售費用。Larva實驗室的Meebits的洗盤交易最多,達到44億美元,Terraforms為29億美元,Loot為7.05億美元,CryptoPhunks(CryptoPunks的衍生項目)為2.51億美元,加上其他項目的6200萬美元。
據悉,LooksRare自推出以來已經積累了超過95億美元的以太坊總交易量,那么迄今為止LooksRare的交易量中約有87%符合CryptoSlam的清洗交易標準。
注:清洗交易是用戶在他們控制的錢包之間買賣NFT,努力操縱每日交易以獲得獎勵。(decrypt)[2022/1/29 9:20:44]
流程上略微復雜,用圖來展示大概就是下面這樣:
在SuperRare加密藝術品市場上178個國家和地區的藝術家已經賺取超過200萬美元:DappReview在微博中表示,在SuperRare加密藝術品市場上,來自全球178個國家和地區的藝術家們已經賺取超過200萬美元。[2020/9/24]
從上面的分析不難發現,Rari合約最終是用到了AlphaFinance項目的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充值到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池瓜群眾第十一期、HAIC上線活動獎勵以及ONT&VET持幣空投已發放完畢,詳情如下:池瓜群眾第十一期:活動期間在CoinW購買MIX的實名制用戶.
1900/1/1 0:00:00作為Kusama網絡的理事會成員,PolkaWorld發布第二份Kusama國庫報告!本報告旨在幫助波卡社區了解國庫資金使用情況,幫助生態項目更好地獲得波卡國庫的支持.
1900/1/1 0:00:00據官方公告,火幣全球站將于2021年5月10日16:00開放WBTC(WrappedBTC)的USDT交易對(WBTC/USDT).
1900/1/1 0:00:00尊敬的GX.COM用戶:經過社區用戶推薦和GX平臺篩選,GX.COM即將上線WOLF,并開通WOLF/USDT交易對,具體時間請關注后續官方公告.
1900/1/1 0:00:00最近,佳士得以4.5億元拍出Beeple的NFT藝術《每一天:前5000天》,加拿大的女歌手克萊爾·伊萊絲·布徹,用20分鐘拍出10首數字單曲,成交總價接近600萬美元后.
1900/1/1 0:00:00有時,面對單邊的行情,有人擅長持有,是對大方向堅定的認可,面對震蕩的行情,有人喜歡波段交易,是對區間嚴密的把控,這個中間沒有誰是絕對性的對,誰又是絕對性的錯,市場是個提款機,也是個收割機.
1900/1/1 0:00:00