价格操纵攻击有多猛? Market遭攻击事件分析
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作为“赏金”。