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万美元在以太坊]。
在Hedgey Finance黑客事件发生后,团队迅速承认了事件,并建议社区用户取消其活跃索赔以减轻任何额外影响。
一些针对智能合约中的输入验证与Flashloans攻击的减轻步骤包括:
其他步骤包括:限制外部调用和实施电路断路器。
从此次黑客事件中学到的教训如下:
感谢你的阅读!
- 原文链接: blog.contenta.xyz/flashl...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,在这里修改,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!