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 中的createLockedCampaign
和cancel
函數。
在建立鎖定活動期間,擁有者可以指定 tokenLocker。該 tokenLocker 在獲得批准後,可以轉出與新創建的活動相關的所有代幣。此行為似乎是一個潛在的漏洞。
雖然函數註釋表明意圖阻止任何人要求額外代幣,但它似乎僅限制對獎勵代幣的存取。至關重要的是,該功能不會撤銷上一步中授予的批准。這種疏忽允許攻擊者撤回活動中所有質押的代幣,同時保留先前步驟的批准。
透過這種持續的批准,攻擊者可以輕鬆地將代幣從合約轉移到任何所需的位置。
透過逆向分析createLockedCampaign
函數,可以明顯看出審批邏輯有缺陷。授予鎖定活動隨時轉出代幣的能力與預期行為相矛盾。這項設計缺陷是 HedgeyFinance 漏洞的根本原因。