闪电贷危机:Hedgey Finance 攻击事件解析

  • gokun4621
  • 发布于 2024-11-19 20:18
  • 阅读 54

2024年4月19日,Hedgey Finance因智能合约中的Flashloan漏洞遭受了4470万美元的损失。攻击者在Arbitrum和以太坊网络上分别盗取了4260万美元和210万美元。本文详细分析了攻击的发生过程、被利用的漏洞、团队采取的缓解措施以及如何预防类似事件。

摘要

在2024年4月19日,Hedgey Finance遭受了4470万美元的巨额损失。这是由于智能合约中的Flashloan漏洞,使攻击者在Arbitrum网络上盗取了4260万美元,在以太坊网络上盗取了210万美元。

本详细报告提供了对黑客事件发生的深度分析,涉及被利用的漏洞、Hedgey团队减轻影响所付出的努力,以及他们如何能够防止这一事件的发生。

项目简介

Hedgey Finance是一个旨在帮助去中心化自治组织(DAOs)和基于区块链的组织安全、高效地管理其代币分配的平台。它为团队提供了所需的确切工具,以安全和无信任的方式分发和自动化向关键接收者的代币释放。

要了解更多关于Hedgey Finance的信息,请访问:

https://hedgey.gitbook.io/hedgey-community-docs

漏洞分析与影响

链上细节

攻击的根本原因

Hedgey Finance黑客事件的根本原因在于项目的代币锁定智能合约中对关键功能的输入验证实施不当。这导致攻击者获得了通过Flashloan批准代币转移的未经授权的访问权限。

攻击者首先通过获取一笔闪贷并使用createLockedCampaign()函数创建一个新活动,目的是建立一个锁定或归属的索赔活动。这个函数对其参数进行了验证;然而,它未能正确验证claimLockup()函数。这个参数在合约中起着至关重要的作用,因为它指定了代币的锁定者,并且也用于在智能合约中索引每个新的锁定活动。

这种代币批准漏洞出现在ClaimCampaigns合约中(在 第192行这里

攻击过程

漏洞在合约中创建和取消活动的过程中出现。攻击者通过获取闪贷并使用createLockedCampaign()函数创建了一个新活动。代币锁定器的创建授予了利用者的合约与Hedgey合约下的代币互动的批准。在同一交易中,cancelCampaign()函数从代币锁定器提取代币,但未能撤销授予的代币授权,尽管撤销了索赔的批准。由于批准仍然存在,攻击者可以转移其他未经授权的代币。

攻击过程如下:

步骤 1 : 首先,攻击者从Balancer那里获得_$1.3M USDC的闪贷以进行攻击合约。攻击者通过createLockedCampaign()函数创建一个活动,锁定$1.3M USDC_,从而发起了攻击。在此调用期间,意外地将批准授予了代币锁定器,此时它是位于地址0xC793113F1548B97E37c409f39244EE44241bF2b3的攻击者合约。这使得攻击者能够操纵合约并获取未经授权的代币访问。

然后攻击者通过cancelCampaign()函数取消该活动,攻击合约随后接收已锁定的_$1.3M USDC_并返回给Balancer。

步骤 2: 攻击者随后在同一交易中取消了活动。cancelCampaign()函数然后将代币提取到代币锁定器,但未撤销对USDC合约使用transferFrom的授权。

步骤 3: 攻击者利用这个机会从ClaimCampaigns合约中使用transferFrom提取了$1.3M USDC

步骤 4: 以太坊主网的受害合约失去了资产,包括USDC、NOBL和MASA代币。所有被盗资金被转换为DAI,并转移到了一个外部拥有账户(EOA)。除了USDC外,还有大量NOBL代币被从ClaimCampaigns合约中盗取,当时价值为$0.8M。此外,还被盗取了_$20K_的MASA代币。

步骤 5: 在Arbitrum链上,攻击者成功劫取了超过7774万Bônus代币。怀疑在黑客控制下的地址在攻击时持有价值约4200万美元的资产。

总损失

根据ArbScan.io,攻击者钱包仍有7680万Bônus代币。此外,额外20万个代币被转移至Bybit钱包,约90万仍保留在其他钱包中。因此,总损失为270万美元,尽管许多报告声称损失为[60万美元在Abitrium和210万美元在以太坊]。

BONUS代币利用者地址

黑客事件后果

在Hedgey Finance黑客事件发生后,团队迅速承认了事件,并建议社区用户取消其活跃索赔以减轻任何额外影响。

减轻步骤

一些针对智能合约中的输入验证与Flashloans攻击的减轻步骤包括:

  • 实施强健的输入验证: 确保所有用户输入和参数都经过彻底验证,以防止未经授权的操作或操纵。验证数据类型和范围,确保输入符合指定格式和约束。
  • 使用修饰符和访问控制: 使用修饰符和访问控制机制将功能限制为仅由授权用户使用。这有助于防止未经授权的实体与关键合约功能进行交互。
  • 实施重入保护: 使用检查-效果-交互模式和重入保护,防止重入攻击。确保在与外部合约交互或转移资金之前执行对合约状态的更改。

其他步骤包括:限制外部调用和实施电路断路器。

从Hedgey Finance黑客事件中学到的教训

从此次黑客事件中学到的教训如下:

  • 输入验证和参数验证是防止利用的基本保障。
  • 协议在上线之前应该进行多阶段审计。
  • 业务逻辑的维护对于协议开发至关重要。

感谢你的阅读!

  • 原文链接: blog.contenta.xyz/flashl...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,在这里修改,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
gokun4621
gokun4621
江湖只有他的大名,没有他的介绍。