批准错误漏洞:分析 HedgeyFinance 攻击

本文为机器翻译
展示原文

2024 年 4 月 19 日,HedgeyFinance 遭受攻击,造成估计损失 4,500 万美元。 Campaign 合约中的设计错误允许攻击者直接窃取大量资产。

在本部落格中,我们将分析以太坊网路上的第一次攻击,以帮助使用者预防自己专案中的类似漏洞。

感谢您阅读 Verichains!免费订阅以接收新帖子并支持我的工作。

概述

攻击者:

https://etherscan.io/address/0xded2b1a426e1b7d415a40bcad44e98f47181dda2

脆弱合约:

https://etherscan.io/address/0xbc452fdc8f851d7c5b72e1fe74dfb63bb793d511

交易攻击:

https://etherscan.io/tx/0xa17fdb804728f226fcd10e78eae5247abd984e0f03301312315b89cae25aa517

https://etherscan.io/tx/0x2606d459a50ca4920722a111745c2eeced1d8a01ff25ee762e22d5d4b1595739

漏洞利用分析

在第一笔交易之后,攻击方法出乎意料地简单。攻击者藉用大量USDC来建立锁定活动,然后立即取消活动。

在第二笔交易中,攻击者触发合约将USDC直接从 HedgeyFinance 合约转移到自己的地址。

第二笔交易的简单性强烈表明,该漏洞利用的根本原因在于步骤 1 中的createLockedCampaigncancel函数。

研究 createLockedCampaign 函数

在建立锁定活动期间,拥有者可以指定 tokenLocker。该 tokenLocker 在获得批准后,可以转出与新创建的活动相关的所有代币。此行为似乎是一个潜在的漏洞。

虽然函数注释表明意图阻止任何人要求额外代币,但它似乎仅限制对奖励代币的存取。至关重要的是,该功能不会撤销上一步中授予的批准。这种疏忽允许攻击者撤回活动中所有质押的代币,同时保留先前步骤的批准。

透过这种持续的批准,攻击者可以轻松地将代币从合约转移到任何所需的位置。

透过逆向分析createLockedCampaign函数,可以明显看出审批逻辑有缺陷。授予锁定活动随时转出代币的能力与预期行为相矛盾。这项设计缺陷是 HedgeyFinance 漏洞的根本原因。

学过的知识

Hedgefinance 漏洞凸显了未能在智能合约中仔细管理代币批准的严重后果。以下是重点:

来源
免责声明:以上内容仅为作者观点,不代表Followin的任何立场,不构成与Followin相关的任何投资建议。
喜欢
收藏
评论