2024 年 4 月 19 日,Hedgey Token Claim 合約在以太坊、Arbitrum 等多條鏈上被攻擊,損失高達數千萬美元。 Hedgey 專案方隨即發出安全告警,提醒創建代幣認領活動的用戶透過官方管道取消代幣認領活動。 (https://twitter.com/hedgeyfinance/status/1781257581488418862)
#
Hedgey 幫助DAOs 和鏈上組織透過鏈上、程式化的代幣發放,將代幣分配給他們的團隊、貢獻者、投資者和社群。本次出現漏洞的工具是其Token Claims 產品,該產品可讓用戶創建一個代幣認領頁面,透過CSV 檔案添加多達十萬多名接收者到白名單中,並控制如何透過串流、時間鎖、回收等方式釋放已認領的代幣。
而這次攻擊事件所利用的合約漏洞在於:Token Claims 產品中的 ClaimCampaigns 合約在創建一個代幣認領活動時,將自身的 token 授權給了創建者指定的地址。當該創建者取消認領活動時,將活動創建階段創建者轉入的token 返還給創建者指定的另一個地址,但並未撤銷token 授權,導致活動創建者的地址依然可以使用ClaimCampaigns 合約所授權的token。
本攻擊涉及到多筆交易,我們僅以下面這筆盜取NOBL 代幣的交易為例來對攻擊原理進行分析。
攻擊交易:https://etherscan.io/tx/0x017ce9593350cba65d506e1a87e52d2c20079fdfa80a350a89fe6fc875f2d9f9##b#b#b# 7d415a40bcad44e98f47181dda2
攻擊者(合約):0xd818ff3d5cfc938014b270d0c8029ba04629b549
0xbc452fdc8f851d7c5b72e1fe74dfb63bb793d511##」漏洞合約(Claim#Campaigns)
ff#被竊代幣(NobleBlocks: NOBL Token):
被竊代幣(NobleBlocks: NOBL Token):
#18638 b3195攻擊流程分析
具體攻擊步驟如下:
攻擊者呼叫漏洞合約的「createLockedCampaign 」函數建立campaign,在參數中將「 campaign.manager 」和「claimLockup.tokenLocker 」都設定為攻擊者自己,將“ campaign.token ”設定為NOBL 代幣,“ campaign.amount ”設定為“ 680000000000000000000000 ”(NOBL 代幣的decimal 為18,因此此處代表68000 個代幣amount ”設定為0。從「 createLockedCampaign 」函數程式碼可以看出,攻擊者先將NOBL 代幣轉給漏洞合約,然後再透過「 safeIncreaseAllowance 」函數,讓漏洞合約給「 claimLockup.tokenLocker 」(攻擊者)授權花費漏洞合約持有的NOBL 代幣的權力,此處授權了「 campaign.amount 」這麼多的額度給攻擊者。攻擊者重複25 次第1 步和第2 步的操作,最終從漏洞合約獲取到了680000 * 25 = 17000000 個NOBL 代幣的使用額度。
在收割贓物階段,攻擊者直接呼叫NOBL 代幣的「 transferFrom 」函數,將NOBL 代幣從漏洞合約轉到攻擊者EOA 地址上,由於在攻擊實施階段攻擊者已經拿到了花費漏洞合約持有的NOBL 代幣的權力,因此在“ transferFrom ”函數中的額度校驗可以順利通過,最終攻擊者成功盜取了漏洞合約中的NOBL 代幣。
具體細節請查看交易:https://etherscan.io/tx/0x47da1ac72d488f746865891c9196c1632ae04f018b285b762b2b564ad1d3a9e5
透過ZAN KYT 資料分析,攻擊者在從漏洞合約中取走NOBL token 之前,利用合約漏洞讓漏洞合約給攻擊者approve token 的交易hash 如下(僅羅列了以太坊上的交易):
#目前,攻擊者已將部分非法所得轉移到了另外一個位址0xd84f48b7D1AaFA7bd5905c95c5d1ffB2625AdA46上,目前暫時沒有其他動作。而claims 合約的開發者(0x5a4bC2bdA1f6B9929b6efdCef4728246bEc4C635)透過Blockscan chat 與攻擊者聯繫,承認了合約中的漏洞並假定了他們的行為為白帽行動聯繫。
透過分析本次攻擊事件,我們有以下建議:
嚴格審查專案中代幣授權的操作。專案開發者和合約稽核者應該明確哪些業務場景需要代幣授權,哪些業務場景需要回收代幣授權,避免未回收的代幣授權或預期之外多餘的授權被攻擊者利用。
專案應設定緊急暫停機制。建議涉及資金流轉的專案都建立完善的暫停機制,當攻擊發生時,能及時停損。
本文由 ZAN Team 的 Cara(X 帳號@Cara6289)和 XiG(X 帳號 @SHXiGi) 共同撰寫。
以上是Hedgey攻擊事件分析:損失上千萬美元的代幣授權的詳細內容。更多資訊請關注PHP中文網其他相關文章!