創宇區塊鏈:Rari Capital 遭受重入攻擊,損失超8000 萬美元

以太坊上feiprotocol 和RariCapital 協議中的多個池子遭到重入攻擊,導致超8000 萬美元損失!前言

北京時間2022 年4 月30 日,知道創宇區塊鏈安全實驗室監測到以太坊上feiprotocol 和RariCapital 協議中的多個池子遭到重入攻擊,導致損失超8000 萬美元。

知道創宇區塊鏈安全實驗室第一時間跟踪本次事件並分析。

基礎信息

眾所周知,compound 項目的代碼本就存在一些安全問題,而feiprotocol 和RariCapital協議延用了compound 的代碼庫,同時在doTransferOut() 方法的實現中使用了存在重入的寫法,導致了事件的發生。

因此次事件中的多次攻擊方式相同,本文僅對一次攻擊進行分析。

攻擊者地址:0x6162759edad730152f0df8115c698a42e666157f

攻擊合約:0x32075bad9050d4767018084f0cb87b3182d36c45

tx:0xadbe5cf9269a001d50990d0c29075b402bcc3a0b0f3258821881621b787b35c6

CEtherDelegator合約:0xfbD8Aaf46Ab3C2732FA930e5B343cd67cEA5054C

漏洞分析

漏洞關鍵在於CEtherDelegator 合約中的doTransferOut 方法使用了call 方法進行代幣轉移,而在使用時並未對其進行gas限制,導致能夠被利用實現重入攻擊;

其次,合約在對用戶進行借貸放款時,並未實行檢查-生效-交互的模式,更新抵押資產價值在放款之後,使得攻擊者能夠在藉款之後進行函數回調;

最為關鍵的一點是,攻擊者在藉款後調用了exitMarket()函數退出借款的市場,之後對抵押品進行贖回,由於此時攻擊者已退出市場,因而協議不會計算這筆借款,所以能夠成功贖回抵押品。

攻擊流程

1、攻擊者使用閃電貸貸款並抵押到協議中;

2、攻擊者藉出ETH,隨後觸發重入;

3、調用exitMarket() 函數退出借款的市場,並取出抵押品;

4、歸還閃電貸;

5、成功賴賬套利,免費借出ETH;

6、最後,攻擊者重複攻擊手法對協議中的池子進行攻擊,成功套利約8000 萬美元。

總結

本次攻擊事件核心是協議引用了存在重入漏洞的compound 代碼庫,導致合約發生重入攻擊。

建議項目方在編寫項目時,應始終使用檢查-生效-交互的模式,並在合約中應用重入鎖,在發送以太幣時一定要限制gas 或者使用thransfer(),一定不要使用存在安全問題的項目代碼。

在此提醒項目方發布項目後一定要將私鑰嚴密保管,謹防網絡釣魚,另外,近期,各類合約漏洞安全事件頻發,合約審計、風控措施、應急計劃等都有必要切實落實。

展開全文打開碳鏈價值APP 查看更多精彩資訊

Total
0
Shares
Related Posts