今日实时汇率
1 美元(USD)=
7.3043 人民币(CNY)
反向汇率:1 CNY = 0.1369 USD
更新时间:2025-04-19 08:02:31
Harvest Finance 此次遭受闪电贷攻击主要是由于 fToken 在铸币时采用 Curve y 池中的报价,攻击者可以通过巨额兑换操控预言机价格来控制 fToken 的铸币数量,从而获利。
撰文:阿得
10 月 26 日中午 12 时左右,DeFi 热门项目 Harvest Finance 被曝遭黑客攻击。据推特网友发现,疑似有黑客借用闪电贷,使用 20 ETH 从 Harvest Finance 中套现超 400 万美元。
消息扩散后,Harvest Finance 项目的 FARM 代币价格在短时间内下跌近 60%,同时 Harvest Finance 和 Curve 的锁仓量大幅减少。截至目前,Curve 锁仓量为 8.53 亿美元,较昨天减少 25.92%;Harvest Finance 锁仓量为 5.85 亿美元,较昨天减少 47.27%。
链闻对相关信息进行梳理,简析 Harvest Finance 本次安全事件的要点。
到底发生了什么?
据慢雾安全团队分析,Harvest Finance 项目此次遭受闪电贷攻击主要是 Harvest Finance 的 fToken(fUSDC、fUSDT...) 在铸币时采用的是 Curve y 池中的报价 (即使用 Curve 作为喂价来源),导致攻击者可以通过巨额兑换操控预言机的价格来控制 Harvest Finance 中 fToken 的铸币数量,从而使攻击者有利可图。
攻击者通过 Tornado.cash 转入 20ETH 作为后续攻击手续费; 攻击者通过 UniswapV2 闪电贷借出巨额 USDC 与 USDT; 攻击者先通过 Curve 的 exchange_underlying 函数将 USDT 换成 USDC,此时 Curve yUSDC 池中的 investedUnderlyingBalance 将相对应的变小; 随后攻击者通过 Harvest 的 deposit 将巨额 USDC 充值进 Vault 中,充值的同时 Harvest 的 Vault 将铸出 fUSDC。而铸出的数量计算方式如下:amount.mul(totalSupply()).div(underlyingBalanceWithInvestment());
计算方式中的 underlyingBalanceWithInvestment 一部分取的是 Curve 中的 investedUnderlyingBalance 值,由于 Curve 中 investedUnderlyingBalance 的变化将导致 Vault 铸出更多的 fUSDC。 之后再通过 Curve 把 USDC 换成 USDT 将失衡的价格拉回正常; 最后只需要把 fUSDC 归还给 Vault 即可获得比充值时更多的 USDC; 随后攻击者开始重复此过程持续获利。
其他攻击流程与上诉分析过程类似
参考交易哈希:
0x35f8d2f572fceaac9288e5d462117850ef2694786992a8c3f6d02612277b0877