广告

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多亿美元资金完全受匿名开发者的控制,并且开发团队存在刻意隐瞒这一事实的嫌疑。

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

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

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

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

相关区块链资讯