2022年10月19日,據Beosin EagleEye Web3安全預警與監控平台監測顯示,Celo生態上的Moola協議遭受攻擊,黑客獲利約840萬美元。
據悉,Moola Market是一個非託管的流動性協議。使用過度抵押貸款、委託貸款或閃電貸款的借款人支付利息,存款人可以賺取複利。攻擊發生之後,Moola Market 表示,其團隊正在積極調查這一事件,平台上的所有活動都已暫停。
關於本次攻擊事件,Beosin安全團隊第一時間進行了分析,結果如下:
#事件相關信息
攻擊者地址
0x5DAE2C3d5a9f35bFaf36A2E6edD07c477f57789e
通過下圖可以注意到黑客的起始資金為18萬枚CELO(價值約13萬美元),準備就緒之後,黑客便開始了他的攻擊之旅。
第一步:看下圖,可以看到攻擊者進行了多筆交易,用CELO買入MOO。
第二步:攻擊者使用MOO作為抵押品借出CELO。根據抵押借貸的常見邏輯,攻擊者抵押了價值a的MOO,可藉出價值b的CELO。
第三步:攻擊者用貸出的CELO購買MOO,從而繼續提高MOO的價格。每次交換之後,MOO對應CELO的價格變高。
第四步:由於抵押借貸合約在藉出時會使用交易對中的實時價格進行判斷,導致用戶之前的借貸數量,並未達到價值b,所以用戶可以繼續借出CELO。通過不斷重複這個過程,攻擊者把MOO的價格從0.02 CELO提高到0.73 CELO。
第五步:攻擊者進行了累計4次抵押MOO,10次swap(CELO換MOO),28次借貸,達到獲利過程。
-8.82M CELO(25次借貸)
-1.85M MOO(1次借貸)
-765k cEUR(1次借貸)
-66k cUSD(1次借貸)
#漏洞分析
本次遭受攻擊的抵押借貸實現合約並未開源,根據攻擊特徵可以猜測攻擊屬於價格操縱攻擊。
抵押借貸合約支持4種代幣的借貸CELO,cEUR,cUSD,MOO。推測抵押借貸合約中每種代幣的價格可能是由其與CELO的交易對進行判斷的。因為後3種代幣未進行過交換,所以價格沒有改變,只借貸了一次。
#資金追踪
截至發文時,攻擊者將約93.1%的所得資金返還給了Moola Market項目方,將50 CELO捐給了impact market。自己留下了總計65萬個CELO作為“賞金”。