LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > Harvest.finance复盘闪电贷攻击事件,损失约3380万美元

Harvest.finance复盘闪电贷攻击事件,损失约3380万美元

2020-10-27 区块律动BlockBeat 来源:区块链网络

背景

律动 BlockBeats10 月 26 日报道,DeFi 挖矿项目Harvest.finance 被爆疑似遭到黑客攻击。黑客借用闪电贷,获利 2400 万美元。随后市场信息纷纷涌出,由于涉及金额巨大,很快引起了国内外加密社区的各种讨论。


相关事件回顾:《Harvest.finance 发生了什么?》

尽管 Harvest.finance 不久后就连续发推对事件进行了跟进和采取补救措施,但根据该协议的锁仓量在过去 24 小时还是骤减 60%。今日 Harvest.Finance 官方发布长文,复原被攻击事件原委并公布补救措施。

以下为 Harvest.Finance 发布全文,由律动 BlockBeats 编译如下:


摘要

1、我们对这一事故负责,并确保今后减少此类事件的发生。

2、为受影响的用户制定补救计划是未来一周的首要任务。

3、我们恳请(攻击者)将资金返还给开发人员,以便将其分配给用户。

发生了什么

10 月 26 日凌晨 02:53:31+UTC,有攻击者对 Harvest.finance 的 USDC 和 USDT 资金库进行了盗窃。攻击者利用套利和无常损失,影响了 Curve.fi 的 y 池中财产的价值,也就是 Harvest.finance 的资金库投资的地方。

协议中的一些机制允许了这种攻击被执行:

1、Harvest.finance 的投资策略计算投资于基础实时协议的资产的实时价值。资金库利用资产的价值来计算向存入资金的用户发放的代币数量。当用户从金库中取出资金时,资金库还利用资产的价值来计算用户在退出时应获得的报酬。

2、一些资金库 (包括 USDC 和 USDT) 内的资产被存入相关 DeFi 协议的共享池 (如 Curve.fi 的 Y 池)。然而这些池内的资产会受到市场影响,比如无常损失、套利和滑点等,也就是说它们的价值可以通过大量的市场交易进行操纵。

攻击者在 Curve.fi 上反复利用 Y 池内 USDC 和 USDT 的无常损失效应。然后把被操纵的资产存入 Harvest.finance 的资金库,随后以有利的价格获得 fUSDC,之后再以正常的价格把代币从金库中提走,这样一来就产生价差,出现套利空间,攻击者获利。

下面通过链上追踪,回顾了这次攻击的过程。

1、攻击者的钱包地址是:

0xf224ab004461540778a914ea397c589b677e27bb

他部署了一个合约:

0xc6028a9fa486f52efd2b95b949ac630d287ce0af

通过这个合约,他们在 2020 年 10 月 26 日 02:53:31 AM + UTC 完成了整个攻击。攻击的 10 个 ETH 是通过 Tornado 获得的(律动注:Tornado 是以太坊隐私交易平台,便于攻击者隐藏代币路径来源。)


2、攻击开始于


3、攻击者从 Uniswap 获得大量 USDT(18308555.417594)和 USDC(50000000)转移到呗攻击的合约中。

4、该合约在 Y 池进行了兑换,将 17,222,012.640506 USDT 转换为 USDC。这么兑换的影响是,由于其他资产产生了无常损失,因此在 y 池中的 USDC 价值变得较高。智能合约获得的金额大致相当于 17,216,703.208672 USDC

5、接下来攻击者将 49,977,468.555526 USDC 存入 Harvest.finance 的 USDC 资金库,以每枚 0.97126080216 USDC 的价格共获得 51,456,280.788906 fUSDC。而在这么攻击前的价格为 0.980007 USDC,也就是说攻击者通过操作,让 USDC 的价格降低了约 1%。而 Harvest.finance 的策略里面的套利检查门槛是 3% 的浮动,因此没有还原这笔交易。

6、然后攻击者通过 Y 池将 17239234.653146 USDC 再兑换回 USDT。其结果是由于恢复了无常损失效应,获得了 Y 池内 USDC 的原始低值。攻击者收到了 17230747.185604 USDT 的回款。

7、攻击者从 Harvest.finance 的 USDC 资金库中撤出,以 50,596,877.367825 美元的价格回购所有 fUSDC。这么一操作,Y 池内 USDC 价值的降低,fUSDC 价格为 0.98329837664 美元。USDC 完全由 Harvest.finance 的 USDC 资金库的缓冲区支付,与 Y 池完全没有交互。净利润 (不包括闪电贷款费用) 为 619408.812299 USDC。然后攻击者在同一笔交易中多次重复这个过程,进行套利。

8、在 4 分钟内执行了 17 笔针对 USDC 资金库的攻击交易后,攻击者以类似的方式对 USDT 金库重复了这一过程。



攻击者又在 3 分钟内执行了 13 笔针对 USDT 资金库的交易。

9、在 2020 年 10 月 26 日 03:01:48 AM + UTC 的过程结束时,攻击者从攻击合约中转移了 13,000,000 USDC 和 11,000,000 USDT 到这个地址:0x3811765a53c3188c24d412daec3f60faad5f119b


10、攻击者将 1,761,898.396474 USDC 和 718,914.048541 USDT 转回给 Harvest.finance 开发者


在评估了攻击事件并复盘了攻击过程之后,Harvest.finance 立即采取行动。从共享资金池中撤出了所有资金,包括 DAI、USDC、USDT、TUSD 以及 WBTC 和 renBTC。目前资金都在资金库中,不能再受市场操纵。此次攻击不涉及 DAI、TUSD、WBTC 和 renBTC,这些资金库的储户没有受到影响。

fUSDC 的价格从 0.980007 降至 0.834953,fUSDT 的价格从 0.978874 降至 0.844812,降幅分别为 13.8%13.7%。造成的损失约为 3380 万美元,相当于攻击前协议锁定的总价值的 3.2% 左右。

在攻击者的地址上,可以看到与攻击有关的交易日志。

攻击者地址:0xf224ab004461540778a914ea397c589b677e27bb

后续将立即采取的措施

Harvest.finance 协议需要维持定期的每周时间表,以使所有流动性挖矿者持续受益。Harvest.finance 团队根据 2020 年 10 月 27 日(周二)的奖励发放时间表,宣布铸造 19,637.46 个 FARM 代币。

而社区要求的、原定于 10 月 27 日(周二)发布的改进版智能合约将暂缓发布,以便根据攻击情况再次对其安全性进行重新评估。在此类攻击的缓解措施到位之前,使用共享池的资金库中的资金将继续从策略中撤出 (见以下部分)。这些措施以及为受影响用户提供补救的基础设施,将是该团队下一个开发冲刺的重点。我们对这一程序漏洞负责,并确保今后减少此类事件的发生。

今后可能采取的解决措施

Harvest.finance 团队致力于评估可能的解决措施,并在即将发布的版本中与任何必要的用户体验变化一起实施。我们将使用新的资金库的可升级特性和基于时间锁的投资策略作为解决措施,并在发布之前向用户详细介绍。

可能的补救措施有以下几个备选:

1、对存款实行「提交-披露」机制。这将消除在单个交易中进行存款和取款的能力,从而使基于闪电贷款的攻击变得不可行。在用户方面,这将意味着在存款过程中,他们的代币将在一次交易中转入 Harvest.finance。用户随后将在另一个交易中索取他们的利息,最好是在另一个块中。这将构成用户体验的改变,并有可能给储户带来更高的、但仍可接受的 Gas 费成本。

2、策略中对现有存款账户进行更严格的配置。目前的门槛设置为 3%,不足以保护金库免受这种攻击。更严格的门槛设置可以使这种攻击在经济上是不可行的的,然而,它可能会在自然无常的损失效应的情况下限制存款。周日超过 7 分钟的事件表明,这一措施还不够有效,因此应视为其他措施的补充。

3、基础资产的提款。当用户将资金存入使用份额池(如 Y 池)的金库时,实际上是用自己的单一资产换取了池内资产(如 yCurve)。如果用户只提取了基础资产,就可以根据当前的市场情况,将其进行资产组合交易。如果市场被操纵,交易也会受到这种操纵,这将使攻击实体无法产生利润。从普通用户的角度来看,提现 yCRV 之后可以通过单独的交易转换为稳定币。虽然这需要一个用户体验的改变,但这也可以解决滑点问题,因此可能对协议有益。这种方法的缺点是,它将保险库提取机制与目前正在使用的策略绑定在一起: 如果一个策略切换到另一个不使用共享基础池的策略,或者使用不同的池,提取所产生的资产也会改变。

4、使用预言机确定资产价格。虽然近似的资产价格可以通过使用外部预言机有效地确定 (由 ChainLink 或做市商提供),但它与实际价格的联系非常松散。如果底层 DeFi 协议内的资产价值与预言机报告的价值不同,金库将面临自由套利和闪电贷攻击。这不是 Harvest.finance 的解决方案,但是,在系统设计和可能的解决措施中会考虑到预言机(因为到目前为止已经考虑过了)。

USDC 和 USDT 用户资金损失的补救方法

攻击者退回的资金将根据快照按比例返还给用户,目前攻击者以 USDT 和 USDC 的形式退回了近 247 万美元;返还资金是当务之急。更多关于返还资金的细节将在工具建成后发布。

其他补救方法将在通过治理投票的方法进行分析和表决。

攻击者信息和赏金

攻击者使用了一个新的以太坊地址来进行攻击

0xf224ab004461540778a914ea397c589b677e27bb

Tornado TX:


攻击发起的 TX:


攻击者通过 REN 协议将比特币转移到以下地址

1Paykw4s2WX4SaVjDrQkwSiJr16AiANhiM

1HLG86DDEzAxAGmEzxr1SUfPCWcnWA6bMm

14stnrgMFNR4LesqQRUdo5n1VUx9xdAMeg

18w2Bm2cCsbLjWQU9BcnjzK8ErmzozrVa3

1FS2t2eAjmjaNmADN6SMHYo7G4XGpX1osS

1NdAJ89k1qpRMpZLwuYGQ7VnM45xD2NJXa

1CLHhshrusvT4XADWA29R2H4ndsSUamEWn

然后,攻击者向已知的币安存款地址进行了几笔交易:


我们将向第一个帮助归还资金的人或团队发放 10 万美元的奖金。如果损失的资产可以在未来 36 小时内归还,那么赏金变为 40 万。在此过程中,请不要对攻击者进行刁难。强烈建议集中一切力量确保用户资金成功返还给开发者。

关于闪贷攻击者的信息

攻击者已经证明了他们的观点。如果他们能够将资金返还给用户,社区将非常感激。重点是将资金返还给受影响的用户。

我们承认我们的程序出现了错误,但有成千上万无辜的人却因为我们的错误受到了连带损害,因此我们谦卑地请求攻击者将资金返还给开发者,我们会将资金全部返还给用户。


原文链接


—-

编译者/作者:区块律动BlockBeat

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...