您当前的位置:首页 > 财经 > 区块链

深度分析Harvest到底发生了什么

2020-10-28 09:32:56 来源: 网络投稿 作者: 亚伦
摘要:10月26日,总锁仓量超过10亿美元的DeFi项目Harvest Finance曝出遭到黑客攻击,已造成大约2400万美元的损失,很多参与者自称损失了15%以上的资金。受此消息影响,Harvest的治理代币F

10月26日,总锁仓量超过10亿美元的DeFi项目Harvest Finance曝出遭到黑客攻击,已造成大约2400万美元的损失,很多参与者自称损失了15%以上的资金。受此消息影响,Harvest的治理代币FARM一度暴跌70%以上。

深度分析Harvest到底发生了什么

对此,DeFi领域的知名参与者建议用户先将资金提出,以确保资金安全。另外官方此前已建议用户暂停向稳定币池以及BTC保险池进行充值。

截至发稿时,Harvest合约锁定的资金量已骤降至5.99亿美元,较24小时之前下滑46.42%。

深度分析Harvest到底发生了什么

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

深度分析Harvest到底发生了什么

aelf创始人兼CEO马昊伯针对此事发表了自己的推测:首先需要了解的是,闪电借贷可以无抵押借到很多钱,不管是有多少滑点的AMM,都是有滑点的。而且Curve的曲线虽然在两个币种之间的滑点比较低,但是到极端情况下还是会有不可控的事件发生。

马昊伯猜测,黑客可能是利用闪电借贷借了一大笔钱,然后把Curve的价格搞到十分离谱,然后再到Harvest按照不合适的价格进行单边充值(亏钱的情况下充值),然后利用 Curve 将钱赎回。这样一来 Harvest 亏了,黑客就赚了,Curve 也因为这波操作价格产生波动。而 Curve 的所谓亏损其实和 Uniswap 的 LP 亏损一样,是一种无常损失,价格会很快恢复。

深度分析Harvest到底发生了什么

黑客到底是如何操作的?

像其他闪电贷攻击操作一样,攻击者动作迅速,没有给平台反映的时间,连续 7 分钟端到端地进行攻击。

1.攻击者到Uniswap USDT-ETH LP合约借了5000w USDT

2.在curve合约用11,425,651.360209USDC兑换11,407,812.062025USDT,通过买入大量USDT改变curve的兑换价格,比如能够使1 USDT = 1.00000x USDC 变为 1 USDT = 11,445,785.907417/11,437,077.011569 = 1.00076146168 USDC

3.在fUSDT合约抵押60,666,288.631146USDT获取持币凭证71,668,595.794204 fUSDT,向harvest充值,harvest会自动向curve提供流动性

4.在curve合约用11,437,077.011569 USDT兑换11,445,785.907417 USDC,前面的操作使得curve的价格变为了1 USDT = 1.00076146168 USDC,然后黑客开始用少量的USDT换出了更多的USDC

5.在fUSDT合约通过第3步获取的71,668,595.794204 fUSDT 赎回61,093,558.168153 USDT,这个步骤表明,黑客已经成功的进行了一次套利,获取了61,093,558.168153 USDT - 60,666,288.631146USDT = 427269.537007 USDT

我们看这个利润是哪里来的呢,很明显是harvest在高位在curve从一个错误的方向添加了流动性引起。也就是curve的原始lp没有受到任何损失,黑客获取的是通过让60,666,288.631146USDT 亏损产生的利润。

重复2-5步骤

6.在curve合约用11,425,651.360209USDC兑换11,407,840.0888USDT

7.在fUSDT合约抵押61,064,321.245384 USDT获取持币持币凭证 72,458,553.719987 fUSDT

8.在curve合约用11,437,077.011569 USDT兑换11,445,757.818914 USDC

9.在fUSDT合约通过第7步获取的72,458,553.719987 fUSDT 赎回61,489,849.847749 USDT

重复2-5步骤

10.在curve合约用11,425,651.360209 USDC兑换11,407,868.045888USDT

11.在fUSDT合约抵押61,460,640.882068 USDT获取持币持币凭证 73,252,241.779134 fUSDT

12.在curve合约用11,437,077.011569 USDT兑换11,445,729.800332 USDC

13.在fUSDT合约通过第11步获取的73,252,241.779134 fUSDT 赎回61,884,410.538009 USDT

14.还给Uniswap USDT-ETH LP合约 50,165,496.489468USDT

到此完成整个交易

深度分析Harvest到底发生了什么

(注:表格中列出的收益为一笔交易的收益)

此次攻击主要是Harvest Finance的fToken(fUSDC、fUSDT...) 在铸币时采用的是Curve y池中的报价(即使用Curve作为喂价来源),导致攻击者可以通过巨额兑换操控预言机的价格来控制Harvest Finance中fToken的铸币数量,从而使攻击者有利可图。

对其他项目的警示/安全审计的重要性

区块链的安全事件中,大多都是由于源代码存在漏洞使得黑客趁虚而入。智能合约受到区块链本身保护,所以智能合约代码可以最大限度的开源和让人阅读。但是代码的公开性使得黑客容易掌握代码的缺陷,进一步利用代码缺陷触发条件改变智能合约执行结果,使得区块链项目存在巨大的经济隐患。所以智能合约代码的开源性需要代码的高可靠性,这种可靠性要求100%正确。

因此,其他开源项目应当始终把网络安全性列为最高优先级,努力为用户提供一个够安全、高性能、体验佳、可信赖的区块链基础设施。


本文地址:https://www.xwkx.net/xw/166969.html - 转载请保留原文链接。
免责声明:本文转载上述内容出于传递更多信息之目的,不代表本网的观点和立场,故本网对其真实性不负责,也不构成任何其他建议;本网站图片,文字之类版权申明,因为网站可以由注册用户自行上传图片或文字,本网站无法鉴别所上传图片或文字的知识版权,如果侵犯,请及时通知我们,本网站将在第一时间及时删除。

热门推荐
返回顶部