2020年10月26号,据慢雾区消息HarvestFinance项目遭受闪电贷攻击,损失超过400万美元。以下为慢雾安全团队对此事件的简要分析。
1.攻击者通过Tornado.cash转入20ETH作为后续攻击手续费
2.攻击者通过UniswapV2闪电贷借出巨额USDC与USDT
3.攻击者先通过Curve的exchange_underlying函数将USDT换成USDC,此时CurveyUSDC池中的investedUnderlyingBalance将相对应的变小
4.随后攻击者通过Harvest的deposit将巨额USDC充值进Vault中,充值的同时Harvest的Vault将铸出fUSDC,而铸出的数量计算方式如下:
amount.mul(totalSupply()).div(underlyingBalanceWithInvestment());
计算方式中的underlyingBalanceWithInvestment一部分取的是Curve中的investedUnderlyingBalance值,由于Curve中investedUnderlyingBalance的变化将导致Vault铸出更多的fUSDC
5.之后再通过Curve把USDC换成USDT将失衡的价格拉回正常
6.最后只需要把fUSDC归还给Vault即可获得比充值时更多的USDC。
7.随后攻击者开始重复此过程持续获利
其他攻击流程与上诉分析过程类似
参考交易哈希:0x35f8d2f572fceaac9288e5d462117850ef2694786992a8c3f6d02612277b0877
总结:此次攻击主要是HarvestFinance的fToken(fUSDC、fUSDT...)在铸币时采用的是Curvey池中的报价(即使用Curve作为喂价来源),导致攻击者可以通过巨额兑换操控预言机的价格来控制HarvestFinance中fToken的铸币数量,从而使攻击者有利可图。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。