当前位置:首页 行业动态 正文

Harvest Finance攻击事件全复盘:如何用20个ETH的成本撬动3000万美元收益?

2023-08-25

作者:秦晓峰

来源:Odaily星球日报

Harvest Finance攻击事件全复盘:如何用20个ETH的成本撬动3000万美元收益?

今天上午,DeFi 聚合协议 Harvest Finance 针对昨天闪电贷攻击发布声明。

根据公告,本次攻击损失共计 3380万美元(此前媒体报道是 400 万美元),约占攻击发生前协议中锁仓总价值的 3.2%;攻击者退回的 247 万多美元,将根据快照按比例分配给受影响的储户;未来 Harvest Finance 将对存款实行“提交-披露”机制,减少闪电贷攻击,使用预言机来确定资产价格,并提高存款 arb 配置(当前阈值设置为 3%)。

昨天上午 10 点,推特用户爆料称,攻击者通过闪电贷依靠 20 ETH 的成本(手续费)在 Curve 协议 y 池进行套利获得无常损失,而 Curve.fi Y 池正是 Harvest 金库投资的地方。攻击者随后将资金转换为 renBTC并套现,Harvest 也因此损失数百万美元,不少参与者称损失了 15%~20% 以上的资金。

受此影响, Harvest Finance 治理代币 FARM 价格从 237 美元一度暴跌至 78 美元,最大跌幅接近 70% ;截至今天发稿,FARM 价格回升至 110 美元左右;Harvest 协议锁仓量,也从 11.1 亿美元量已骤降至 4.5 亿美元,最大跌幅 60%。

不过,Curve 协议却并未受到影响,其治理代币 CRV 价格在过去 24 小时不断攀升,一度升至 0.44 USDT,最大涨幅接近 30%。

(1)事件回顾:闪电贷套利

 

Harvest Finance,是一个 DeFi 收益聚合器,其主要功能是向其它 DeFi 池提供流动性来为自己的流动性提供者赚取收益。在攻击发生前,Harvest Finance 主要在 Curve 协议 y 池提供流动性。

攻击者是如何实现攻击,完成套利的?

先为大家捋一下本次攻击的逻辑,简单来说分三步,即「借贷-正向操作价格-逆向操纵价格」:

  • 攻击者通过闪电贷借出大量 USDT 以及 USDC;
  • 在 Y 池将大量 USDT 兑换成 USDC,导致 USDC 价格升高;由于 Harvest 池内 USDC 价格参考 Y 池,也跟着上涨;此时再用 USDC 在 Harvest 池兑换更多的 fUSDC;
  • 在 Y 池对上述过程逆向操作,将大量 USDC 兑换成 USDT,导致 USDC 价格降低;此时 Harvest 池内 USDC 价格也跟着下降;再用 fUSDC 可以兑换出比原来更多的 USDC,完成套利。
当然,为了使得链上交易能在极短的时间内进行,因此每笔交易都给足了手续费。

Harvest Finance 公告介绍了完整的攻击链条:

  • 通过以太坊匿名转账平台 Tornado.cash 转入 20 ETH 作为后续攻击手续费,攻击者钱包地址是 0xf224ab004461540778a914ea397c589b677e27b,并部署了一个攻击合约 0xc6028a9fa486f52efd2b95b949ac630d287ce0af。
  • 通过 Uniswap V2 闪电贷借出巨额 USDT(18,308,555.417594 ) 与 USDC(5000 万),注入攻击合约中;
(注释:闪电贷要求借款和还款在"一个交易"中完成,否则就撤回借贷资金,攻击者正是利用了这段空白时间,完成了套利交易;闪电贷套利也是目前较为普遍的一种方式。)
  • 该合约在 Curve 协议 Y 池内通过互换协议将 17222012.640506 USDT 兑换成了 USDC。互换的影响是,由于其它资产发生了无常损失,Y 池内的 USDC 价值升高,获得了  17216703.208672 USDC;此时,攻击者加上之前闪电贷款的本金,攻击持有约 6721 万 USDC、108.65 万的 USDT。
  • 攻击者将 49,977,468.555526 USDC 存入 Harvest 的 USDC 金库,按照单价 fUSDC/USDC=0.97126080216,兑换了 51,456,280.788906 fUSDC。攻击前单价为 0.980007,现在单价 0.9712 环比下降大约 1%,并没有触发 Harvest 套利策略设置的 3% 红线,因此交易有效且成功进行,没有被强制恢复。
  • 攻击者通过 y 池,将剩余的 17239234.653146 USDC 兑换回 17,230,747.185604 USDT;由于无常损失效应的恢复,此时 Y 池中 USDC 价值下降,攻击者获得 17,230,747.185604  USDT。
  • 攻击者从 Harvest 的 USDC 金库中提币,由于此时 Y 池内的 USDC 价值下降,fUSDC/USDC单价升高至 0.98329837664,攻击者将此前全部的 fUSDC(约 5145 万)的股份交换回了 50596877.367825 USDC。并且,USDC 完全由 Harvest 的 USDC 金库支付,完全不与 Y 池交互,也就不会影响 Y 池内 USDC 价格。
  • 经过这么一次套利,攻击者的净利润(不包括闪电贷借贷费用)为 619408.812299  USDC。而后,攻击者同一笔交易中重复了几次该过程。
  • 在 4 分钟内,攻击者针对 USDC 金库执行了 17 笔攻击交易后,而后有用类似的方式对 USDT 金库发起攻击,并在 3 分钟内完成了 13 笔攻击交易。
  • 北京时间 10 月 26 日 11:01:48 ,攻击者将 13,000,000 USDC 和 11,000,000 USDT 从攻击合约中转移至地址 0x3811765a53c3188c24d412daec3f60faad5f119b。
  • 事件曝光后,攻击者向 Harvest 返还了部分资金,共计 1761898.396474 USDC 和 718,914.048541 USDT。
攻击发生后,不少人在 Harvest 推特下留言称,损失了 15%-20% 的资金。众多 KOL 也建议用户先将资金从 Harvest 提出,以确保资金安全。

根据 Harvest 统计,用户损失情况不容乐观:USDC 金库单价从 0.980007 跌至 0.834953,USDT 金库单价从 0.978874 跌至 0.844812,跌幅分别为 13.8%和13.7%;总计损失的价值约为 3380 万美元,约占攻击发生前协议中锁仓总价值的 3.2%。

(2)官方态度:补救之外,攻击者还钱就行

 

事故发生后,Harvest 团队发文表示,为了保护用户,已经采取措施阻止向稳定币和 BTC 金库存款,现有存款将继续赚取 FARM。

根据今天上午公告,Harvest 已经从共享池中撤出所有资金,包括 DAI、USDC、USDT、TUSD以及 WBTC 和 renBTC。这些资金目前存放在金库中,不会受到进一步的市场操纵。另外,这次攻击没有涉及到 DAI、TUSD、WBTC 和 renBTC,这些金库的储户没有受到影响。

另外,关于用户补偿方面,Harvest 表示,攻击者退回的 247 万多美元,将通过快照按比例分配给受影响的储户,其他补救方法将在治理中进行分析和表决。

此次事故,也暴露了 Harvest 系统机制所存在的弊病。

慢雾安全团队分析认为,此次攻击主要是 fToken(fUSDC、fUSDT等)在铸币时采用的是Curve y 池中的报价,导致攻击者可以通过巨额兑换操控预言机的价格来控制 fToken 的铸币数量。

针对报价问题,Harvest 下一步将使用预言机来确定资产价格。

“虽然一个近似的资产价格可有效地从外部预言机(由 Chainlink 或 Maker 提供)中确定,但是它与实际价格的联系非常松散。如果底层 DeFi 协议内的资产价值与预言机报价不同,金库将面临自由套利和闪电贷攻击。这不是 Harvest 的解决方案,但是,在系统设计和可能的缓解策略中,我们将考虑使用预言机。”

并且,未来 Harvest Finance 将对存款实行“提交-披露”机制,减少闪电贷攻击,提高存款 arb 配置(当前阈值设置为 3%)。此外,Harvest Finance 原定于 10 月 27 日发布的智能合约改进计划也将被推迟,以便在攻击背景下再次评估其安全性。

对于攻击者,Harvest Finance 公布了相关涉案地址,并发文表示,“除了持有被盗资金的BTC地址,我们现在还获取了大量关于攻击者的个人身份信息,他在加密社区颇为有名。”

不过,Harvest Finance 似乎无意追查攻击者的身份信息。

“我们对公开攻击者个人信息不感兴趣,我们尊重你的技术和独创性,只要你把钱返还给用户。攻击者已经证明了他们的观点。如果他们能把这笔钱返还给用户,将会受到社会各界的高度赞赏,将资金返还给受影响的用户是重点。”

在公告中,Harvest Finance 表示:

  • 我们向第一个帮助我们找回资金的个人或团队提供 10 万美元的赏金。
  • 如果是在接下来的 36 小时内完成退还,则赏金为 40 万美元。请不要在这个过程中人肉搜索攻击者,我们强烈建议将所有努力集中在确保用户资金成功返还给部署人员上。
由于攻击者一直在通过 RenBTC 进行变现。截止发稿时,Harvest Finance 官方已宣布通过与 RenProtocol 合作,获取相关 RenBTC 提现地址,并公布了通过 RenProtocol 导出的 BTC 地址,现在正在寻求币安、火币、OKEx 和 Coinbase 等交易平台的帮助,希望可以冻结相关地址。

(3)深陷负面舆论的 Harvest Finance

 

由于 Harvest Finance 对待攻击者态度较为「暧昧」,不少声音认为官方监守自盗,上演了一出贼喊捉贼的大戏。

加密 KOL@Bitcoin 发出质疑:

  • 事实上没什么事能比直接抢用户本金更赚钱,FARM 总市值就 2500 万,项目方 20% 的币,即便所有币卖完也就赚 500万,赚千把万是极限了,而搞这么一出收益几千万。结合项目方对这件事的处理方案,我觉得确实不小的概率项目方监守自盗,所以他们肯定不会把自己搞来的钱在拿去填这个坑;
  • 黑客冒着风险,只盗取了几千万美元却没有直接把上亿的池子全部榨干,明显是不想让项目死掉,和团队的利益是一致的;
  • 有投资者在推上问能不能拿部分团队的币来补偿受害者,Harvest回答资金数额太大了,自己不能承担。事实上大家都清楚赔不赔和能不能赔得起是两回事,这个团队压根不想赔;
  • 据投资者称,此前社区里的投资者不断地在反应fusd被套利净值不断下跌的情况,但团队一个多月面对这情况始终视而不见,任由“黑客”套利。
这并不是 Harvest Finance 第一次深陷舆论危机。

就在套利攻击前两天,DeFi 观察者 Chris Blec 就揭示了风险:该项目合约锁定的 10 多亿美元资金完全受匿名开发者的控制,并且开发团队存在刻意隐瞒这一事实的嫌疑。

Harvest Finance攻击事件全复盘:如何用20个ETH的成本撬动3000万美元收益?

CoinTelegraph 援引安全团队 Haechi 审计报告报告称,Harvest Finance 拥有一个管理密钥,可让持有者随意铸造代币并窃取用户的资金,该管理密钥可能由该项目背后的匿名开发者持有。

币印潘志彪表示,Harvest 没有进入币印 DeFi 理财,最大的原因就是没有通过币印的风控,他们理论上甚至可以挪用客户资金,因为缺乏必要的Timelock、多签管理等保护措施,他们为提高资金使用效率,采用快速生效策略机制,但极大牺牲了安全性。

作为对外界质疑的回应,Harvest Finance 在合约中引入了一个 12 小时的时间锁功能,但依然未能打消用户质疑。

经历了此次攻击风波,Harvest Finance 链上锁仓量也从 11.1 亿美元量已骤降至 4.5 亿美元,最大跌幅 60%。

未来,Harvest Finance 将如何发展,Odaily星球日报也将持续关注。