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 作为「赏金」。
(声明:请读者严格遵守所在地法律法规,本文不代表任何投资建议)