学院 安全深度 文章

链上卫士:稳定币USDM团队“Rug Pull”事件复盘,损失约合4,600万美元

2021.11.12

一、背景

消息显示,11月11日(周四)晚9时,稳定币交易协议Curve因USDM稳定币协议Mochi的“治理攻击”而导致提供了USDM流动性的用户面临4,600万美元的损失,事情发生后,Curve已紧急处理避免了更大范围的损失。

此前Mochi项目方通过购买Convex的CVX代币,投票增加USDM池的奖励以增加 USDM与其他资产的流动性,然后在流动性提升后将项目方自己拥有的大量USDM代币兑换成DAI,该团队总共将4,600万枚USDM换成了DAI。

欧科云链链上卫士团队获悉后,第一时间进行了跟进,并对整个事件做了详细梳理,以下为具体分析过程。

二、攻击细节分析

链上卫士团队目前初步分析为项目方合约owner内部作案

USDM合约owner铸币权限地址:0x9cadb2c8735a120c4d3292dca2b7f03d5f7dd6b4;

操作地址:0x0c3a1a43392f06347aa8fea1852b4ba068443a0d;

USDM团队多签地址1:0x6DDB204dF5980b122fa89f928fd741F35584AC0B;

USDM团队多签地址2:0xdc71417E173955d100aF4fc9673493Fff244514C;

  1. USDM合约owner铸币权限地址[0x9cad]给操作地址[0x0c3a]凭空mint 46,000,000 USDM稳定币;
图片来源:OKLink

2. 操作地址的ETH Gas来自Coinbase交易所的提现;

3. 操作地址在Curve的USDM池抛售USDM换成该池其他用稳定币添加流动性用户的稳定币46,004,689 DAI(本次用户资金损失为4,600万美元,只影响curve USDM池添加流动性用户,其他Curve池不受影响);

图片来源:OKLink

4. 操作地址将DAI全换成9,875 ETH,其中1,720 ETH配对该团队发行的另一个空气代币添加Uniswap流动性,LP转给该团队持有的多签地址1 [0x6DDB];

图片来源:OKLink
图片来源:OKLink
图片来源:OKLink

5. 其余8,155 ETH全部换成1,050,285个CVX代币并转账给该团队控制的另一个多签地址2 [0xdc71](注:该地址同时为USDM协议手续费收款地址,另CVX是加速Curve挖矿的创新DeFi项目Convex Finance的代币);

图片来源:OKLink
图片来源:OKLink

6. 多签地址2 [0xdc71]将CVX全部锁定到CVX项目进行锁仓挖矿(注:全部锁在了CVX锁仓合约,多签地址2 [0xdc71]可以在之后取回所有CVX代币)。

链上卫士团队将密切监控上述多签地址以及持有多签地址的多个私人地址的资金动向,并将于第一时间向社区披露,请持续关注链上卫士团队的最新动态。

三、攻击原因

本次攻击系USDM稳定币协议Mochi利用规则漏洞对Curve发起的治理攻击,以下为整起事件的攻击逻辑。

官方资料显示,Mochi是一个跨链自治算法借贷协议,可以实现无门槛、基于特定条件的抵押资产上市。Mochi 用户可以通过 Mochi Vaults智能合约,利用列出的抵押品来铸造 USDM 稳定币。

11月11日00:40(HKT),Mochi项目方推出其治理代币Mochi Inu(MOCHI),并对其USDM/3pool的流动性进行激励。有必要一提的是,MOCHI没有铸造上限或代币经济模型,而且其价格预言机实际上只是一个热钱包设置的数字,也就意味着Mochi团队可以铸造任意数量的MOCHI且没有时间锁,再抵押生成USDM,并通过其流动性池子将USDM兑换成其他有实际支撑的稳定币,前提是需要有足够的流动性。

更糟糕的一点是,Mochi的头寸使用NFT表示,Mochi Vaults通过检查用户的NFT所有权来验证用户的头寸所有权,但Vaults本身并不存储NFT地址,相反它查询的是MochiEngine[0x860E]合约,在这种情况下,项目方的治理钱包可以随时更改NFT地址,并提取所有铸造USDM的抵押物。

图片来源:OKLink
图片来源:OKLink

接着,Mochi项目方利用其持有的大量MOCHI印出4,600万枚USDM,然后去Curve上兑换出4,600万枚DAI,此时项目方没有选择立刻套现,而是通过DAI购买了大量Convex Finance的治理代币CVX。

这里需要补充一下Curve的机制,以及CVX在其中的作用。作为针对稳定币设计的去中心化交易池,Curve大受欢迎源于两个因素,一是Curve的流动性提供者(LPs)面临的无常损失风险较低;二是其收益率喜人,Curve的LPs除了能从每笔交易的交易费中获得50%的交易费奖励,以及从Compound、Aave等接入Curve的外部协议中获得贷款利息外,还能赚取CRV耕作激励,每个Curve流动性池都使用CRV通胀来激励 LPs。

除了持有CRV外,持币者还可以将他们的CRV锁定在Curve DAO中,在Curve DAO中锁定CRV一段时间后可以获得投票所需的veCRV代币,锁定CRV,持有veCRV的用户可以获得:

  1. 治理权,比如投票决定CRV的增发在不同Curve流动性之间的分配;
  2. 50%的协议交易费(Curve的每笔交易费,50%分配给所有LPs,另50%分配给veCRV持有者);
  3. 加速的CRV奖励;

对于LPs能赚取的CRV数量而言,加速起到了乘积的作用,最多可以将LP的CRV奖励增至2.5倍。Convex Finance就是一种旨在帮助Curve LPs和CRV代币持有者实现收益最大化,即该协议试图获得尽可能多的CRV,以便能够将更多的CRV锁定换取veCRV,这样就能获得CRV加速奖励,从而为存款人带来更高的收益。

那么Mochi团队在买入大量CVX后,就可以利用手里的CVX驱使Convex的海量veCRV为自己的池子投票,获得大量的CRV补贴,这样挖矿APR就会持续上涨,从而吸引到更多的LPs参与到USDM流动性池中。

进行到这一步,大家就明白了,Mochi手中持有大量的MOCHI,MOCHI可以全部铸造成USDM,而USDM流动性池子变深厚后,项目方就可以轻而易举地通过Curve将原先流动性极差的USDM兑换成USDT、DAI等真金白银,完成收割。事发后,Curve关闭了USDM gauge,使其立即停止接收CRV产出,以避免更大范围的损失。

截至发稿,据CoinGecko数据显示,MOCHI 24小时最高跌幅达到了65%,目前价格为0.00002508美元。

免责声明:OKLink学院仅提供信息参考,不构成任何投资建议。

相关推荐

security-insight