2021 年 5 月 8 日,據鏈聞消息,以太坊收益聚合協議 Rari Capital 因集成了 Alpha Finance 產生了漏洞,損失近 1500 萬美元。事后,Rari Capital 官方發布了事故分析報告,分析了此次事故的主要原因。慢霧安全團隊在官方分析的基礎上,結合慢霧安全團隊對此次事件的深入分析,進一步解讀本次安全事故的原因。
本次攻擊發生在 Rari Capital 的 RariManger 合約中,整個過程下來就是攻擊者首先通過閃電貸從 dYdX 中借出巨量資金,然后不停的重復調用 RariManger 合約中的 deposit 和 withdraw 函數,完成獲利。如下圖:
NFT市場LooksRare昨日交易手續費收入超4000枚ETH:1月22日消息,新興的NFT市場LooksRare上線第11日交易手續費收入達4028枚ETH(價值1030萬美元),將全部分發給LOOKS質押者。[2022/1/23 9:07:17]
那么用戶是如何通過 deposit 和 withdraw 這兩個操作獲利的呢?我們需要分析對應的函數:
NFT市場LooksRare日交易量逾2.75億美元 超越OpenSea:1月12日消息,據Dune Analytics數據顯示,1月11日,NFT市場LooksRare交易量超過2.75億美元,超越OpenSea交易量(1.22億美元)。據1月10日報道,NFT市場LooksRare和官方代幣LOOKS正式上線。用戶在2021年6月16日至2021年12月16日期間,在OpenSea交易3 ETH及以上,就有資格獲得LOOKS代幣空投。
據悉,LooksRare是一個以社區為中心的NFT交易平臺,LOOKS是支持LooksRare的代幣。[2022/1/12 8:43:00]
以上是 deposit 函數的部分邏輯,首先 deposit 函數本身會調用內部的 _depositTo 函數,然后會再次調用 getFundBalance 函數來獲取合約的余額。getFundBalance 函數最終是會調用到 Rari Controller 合約的 getBalance 函數去獲取余額。最后是通過 Rari Controller 合約中的 AlphaPoolController 庫的 getBalance 函數獲取余額。如下圖:
LooksRare空投合約地址過去1小時燃燒近250枚ETH:金色財經報道,據ultrasound數據顯示,過去1小時以太坊燃燒1111.68枚ETH,燃燒量前三的協議分別為:0xa35d…5970燃燒249.74枚ETH、UniswapV3 燃燒180.27枚ETH、LooksRare Token燃燒88.88沒ETH。據金色財經查詢發現,燃燒排名第一的地址為LooksRare空投合約銷毀地址。
金色財經此前報道,NFT市場LooksRare官方代幣LOOKS正式上線,用戶在2021年6月16日至2021年12月16日期間,在OpenSea交易3 ETH及以上,就有資格獲得LOOKS代幣空投。[2022/1/10 8:39:01]
Rarible推出免費創建NFT功能:金色財經報道,NFT交易平臺Rarible宣布推出免費創建NFT功能。該功能使NFT不是在被創建的那一刻被鑄造,而是在購買的那一刻被鑄造。因此買家在購買NFT時才需支付gas費。[2021/10/19 20:38:28]
流程上略微復雜,用圖來展示大概就是下面這樣:
從上面的分析不難發現,Rari 合約最終是用到了 Alpha Finance 項目的 ibETH 合約的 totalETH 函數獲取合約的余額,目的是為了根據 totalETH 和 totalSupply 的比值計算出 Rari 合約真正的 ETH 余額。deposit 函數是根據用戶的充值 ETH 的數量和比值計算要發放給用戶的 REPT 數量,而 withdraw 函數的公式也大同小異,同樣需要通過 getBalance 函數獲取合約的 ETH 余額并計算比值,然后根據用戶的 REPT 代幣的余額和比值計算需要返還給用戶的 ETH 的數量。但是問題恰恰出在這個獲取 ETH 余額的公式上。
NFT平臺Rarible九月銷售額超過500萬美元:金色財經報道,據Messari數據,以數字藝術收藏品為中心的NFT平臺Rarible的九月銷售額已超過500萬美元。[2020/9/22]
根據官方描述,從 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@慢霧安全團隊
前段時間 Gavin 分別 在 Github 上發布重構 XCM 的待開發清單以及 Kusama 平行鏈的上線清單,給社區帶來最新進展的同時.
1900/1/1 0:00:00熱點摘要: 1.?韓國將加強對非法虛擬資產交易的監控,打擊比特幣套利交易。2.?Filecoin獲得ZB capital 、ZBG Capital的聯合投資.
1900/1/1 0:00:002021年第一季度的關鍵詞: 用戶數量(增加) NFT(熱度) 穩定幣(新玩法) DeFi(解決高昂gas費的解決方案)去中心化金融(DeFi)指的是從傳統的集中式金融系統向以太坊區塊鏈支持的點.
1900/1/1 0:00:00研究表明,數字銀行的成熟度與財務績效的提高之間有著直接的聯系。但是,這種關聯要求銀行和信用合作社不僅僅是部署新技術.
1900/1/1 0:00:00本文來自知名投資機構Variant Fund投資人Spencer Noon推特,并由鏈捕手編譯。根據 Etherscan 的數據,以太坊地址數的累計數量已經超過了 1.1?億個.
1900/1/1 0:00:00DappRadar的最新數據顯示,到目前為止,2021年以NFT形式出售的數字收藏品的價值和需求都呈爆炸式增長,僅第一季度的交易額就超過15億美元.
1900/1/1 0:00:00