闪电贷攻击:曾经的 DeFi 之王YFI也未能幸免_SDC:EARN

撰文|NESTFANS.知鱼

出品?|NEST爱好者

引言:关于DeFi的安全问题,从2020年2月份到现在,损失数亿美元,各路专家已有无数文章来解析DeFi乐高的风险,直到现在这类问题依然没有引起开发者们的高度重视,在市场持续狂热以及锁仓规模不断推高的环境中,人们似乎已经忘了,那个深埋在狂欢大陆土地下的隐患,并没有消失......

曾经的DeFi之王YFI协议未能幸免

2021年第一次闪电贷攻击事件,发生在了2020年的DeFi王者——YearnFinance协议身上,当然,这是偶然事件还是开年先拿王者开刀,来嘲讽DeFi的无能,我们暂且不论,也无从洞察“攻击者”的心境,这里,我们来看一下发生了什么。

安全团队:攻击者通过AVAX闪电贷攻击获利约37万USDC:9月7日消息,据CertiK预警监测,一个针对AVAX的闪电贷攻击影响了合约0xe767c和一些LP,攻击者获利约37万USDC。攻击者可能影响的协议包括Nereus Finance、Trader Joe、Curve Finance。[2022/9/7 13:13:26]

根据慢雾科技的情报,遭受攻击的是YearnFinance协议的DAI策略池,具体情况如下:

1.攻击者首先从dYdX和AAVE中使用闪电贷借出大量的ETH

2.攻击者使用从第1步借出的ETH在Compound中借出DAI和USDC

3.攻击者将第2步中的所有USDC和大部分的DAI存入到CurveDAI/USDC/USDT池中,这个时候由于攻击者存入流动性巨大,其实已经控制CurveDAI/USDC/USDT的大部分流动性

OneRing确认遭到闪电贷攻击,黑客窃取逾145万美元:3月22日消息,Fantom生态稳定币收益优化器OneRing发文表示,北京时间3月22日02:44:10,黑客通过闪电贷攻击窃取了1454672.244369枚USDC,且合约已被配置为在特定区块自毁,因此几乎不可能跟踪合约中的哪些特定功能被调用以窃取资金。目前,团队已暂停保险库,正在努力重新设置。并且团队正在制定为受影响的人提供具体的中长期还款计划,此外,OneRing宣布将提供被盗资金的15%以及1,000,000个RING代币作为返还资金的赏金。此前,派盾报告显示,Fantom生态稳定币收益优化器OneRing疑似遭到攻击。[2022/3/22 14:10:24]

4.?攻击者从Curve池中取出一定量的USDT,使DAI/USDT/USDC的比例失衡,及DAI/(USDT&USDC)贬值

Grim Finance 被黑简析:攻击者通过闪电贷借出 WFTM 与 BTC 代币:据慢雾区情报,2021 年 12 月 19 日,Fantom 链上 Grim Finance 项目遭受攻击。慢雾安全团队进行分析后以简讯的形式分享给大家。

1. 攻击者通过闪电贷借出 WFTM 与 BTC 代币,并在 SpiritSwap 中添加流动性获得 SPIRIT-LP 流动性凭证。

2. 随后攻击者通过 Grim Finance 的 GrimBoostVault 合约中的 depositFor 函数进行流动性抵押操作,而 depositFor 允许用户指定转入的 token 并通过 safeTransferFrom 将用户指定的代币转入 GrimBoostVault 中,depositFor 会根据用户转账前后本合约与策略池预期接收代币(预期接收 want 代币,本次攻击中应为 SPIRIT-LP)的差值为用户铸造抵押凭证。

3. 但由于 depositFor 函数并未检查用户指定转入的 token 的合法性,攻击者在调用 depositFor 函数时传入了由攻击者恶意创建的代币合约地址。当 GrimBoostVault 通过 safeTransferFrom 函数调用恶意合约的 transferFrom 函数时,恶意合约再次重入调用了 depositFor 函数。攻击者进行了多次重入并在最后一次转入真正的 SPIRIT-LP 流动性凭证进行抵押,此操作确保了在重入前后 GrimBoostVault 预期接收代币的差值存在。随后 depositFor 函数根据此差值计算并为攻击者铸造对应的抵押凭证。

4. 由于攻击者对 GrimBoostVault 合约重入了多次,因此 GrimBoostVault 合约为攻击者铸造了远多于预期的抵押凭证。攻击者使用此凭证在 GrimBoostVault 合约中取出了远多于之前抵押的 SPIRIT-LP 流动性凭证。随后攻击者使用此 SPIRIT-LP 流动性凭证移除流动性获得 WFTM 与 BTC 代币并归还闪电贷完成获利。

此次攻击是由于 GrimBoostVault 合约的 depositFor 函数未对用户传入的 token 的合法性进行检查且无防重入锁,导致恶意用户可以传入恶意代币地址对 depositFor 进行重入获得远多于预期的抵押凭证。慢雾安全团队建议:对于用户传入的参数应检查其是否符合预期,对于函数中的外部调用应控制好外部调用带来的重入攻击等风险。[2021/12/19 7:49:04]

5.攻击者第3步将剩余的DAI充值进yearnDAI策略池中,接着调用yearnDAI策略池的earn函数,将充值的DAI以失衡的比例转入CurveDAI/USDT/USDC池中,同时yearnDAI策略池将获得一定量的3CRV代币

MakerDAO发起有关缓解闪电贷风险的执行投票:金色财经报道,据官方博客消息,治理促进者和Maker Foundation智能合约团队已将一系列执行投票纳入投票系统。其中包括:1.增加GSM暂停延迟,从12小时增加到72小时;2.取消对Oracle Freeze模块的授权;3.取消清算断路器的授权。这些更改是对闪电贷风险增加的紧急应对措施。[2020/10/31 11:16:55]

6.攻击者将第4步取走的USDT重新存入CurveDAI/USDT/USDC池中,使DAI/USDT/USDC的比例恢复

7.攻击者触发yearnDAI策略池的withdraw函数,由于yearnDAI策略池存入时用的是失衡的比例,现在使用正常的比例提现,DAI在池中的占比提升,导致同等数量的3CRV代币能取回的DAI的数量变少。这部分少取回的代币留在了CurveDAI/USDC/USDT池中

8.由于第3步中攻击者已经持有了CurveDAI/USDC/USDT池中大部分的流动性,导致yearnDAI策略池未能取回的DAI将大部分分给了攻击者

9.重复上述3-8步骤5次,并归还闪电贷,完成获利

攻击者利用闪电贷进行这一循环套利,使得YearnFinance损失高达千万美元!

根源不是闪电贷,而是脆弱的价格机制

YFI和Curve之间的组合,利用LP的不同净值来计算份额,通过池子里的份额来决定价格,这是典型的价格操控!

我们把现在的各DeFi协议当作是各个国家,每个国家制定不同的政策规则,商人通过政策规则之间的组合,寻找突破口,来获取利差。这是光明正大的赚取合理收益,无法责怪攻击者,因为,你的机制告诉了别人,怎么来操控我的价格进行套利。

关于闪电贷攻击的问题,我们已经阐述过多次,《解读|Compound遭受价格预言机操纵攻击事件始末》,这篇文章里有详细描述。

价格操控的背后所暴露的问题,才是我们更应该去思考和研究的方向。

现如今的DeFi协议开发者,往往把快速、高效放在第一位,对区块链的本质充耳不闻,大家都求快,不愿去解决本质问题的根源。因为几乎所有人都正在这样做,睁一只眼闭一只眼。

比特币的设计,是让所有节点一起对正在广播的交易进行验证,所有人都同意的广播,这笔交易才作数。其本身就是一个冗余的复杂系统,比特币并非是为了在“可用性”方面做出创新,而是在“可信性”方面给出了一个完美的解决方案,解决了去中心化过程中的安全问题。比特币网络的算力规模越大,网络越安全,但其处理交易的效率并没有提高。

如果一个价格机制可以简单的利用所谓的“可信”节点上传到链上或者通过LP份额的方式来简单决定,而使用这个价格的DeFi协议或者用户无法对你的价格进行无需许可的有效验证,那么你给出的价格就是你说的算,并不是共识过的价格,并不是大家一起说的算;进而,基于这套价格体系的链上经济体的安全系数,也必然不会随着规模的扩大而增强。简单来讲,这与区块链本质背道而驰,舍本逐末。

坚定去中心化的安全之路

NESTProtocol坚持以无需许可,可被任何人验证的无套利空间的价格同步在链上生成,供DeFi协议调用,随着NEST报价矿工/验证者参与规模的增长,其在链上生成的价格数据质量也会同步提高,这是一个非合作博弈系统所应该表现出来的基础属性,可累积博弈。

在有效市场下,这种报价矿工之间的博弈、报价矿工与验证者之间的博弈,以及协议与二级市场之间的博弈,多维度非合作博弈生成的链上价格才是我们应该去追求的安全之根。

坚持区块链本质,坚定去中心化精神,是区块链行业发展的第一准则。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

[0:46ms0-4:36ms