2024年4月19日,Hedgey Finance遭受多筆攻擊交易,損失超過200萬美元。
SharkTeam對此事件第一時間進行了技術分析,並總結了安全防範手段,希望後續項目可以引以爲戒,共築區塊鏈行業的安全防线。
Hedgey Finance被過個攻擊者發起了多次攻擊,利用代幣批准漏洞,盜取了ClaimCampaigns合約中的大量代幣。
以其中涉及金額最大的一筆交易爲例,涉及金額約130萬美元:
攻擊交易:0x2606d459a50ca4920722a111745c2eeced1d8a01ff25ee762e22d5d4b1595739
攻擊者:0xded2b1a426e1b7d415a40bcad44e98f47181dda2
攻擊合約:0xc793113f1548b97e37c409f39244ee44241bf2b3
目標合約:0xbc452fdc8f851d7c5b72e1fe74dfb63bb793d511(ClaimCampaigns)
該交易直接從ClaimCampaigns合約中轉移走了1,303,910.12 USDC。交易詳情如下:
實際發起攻擊的交易是
0xa17fdb804728f226fcd10e78eae5247abd984e0f03301312315b89cae25aa517(簡記爲0xa17f)
攻擊過程如下:
1 從Balancer中閃電貸1.305M USDC。
2 調用ClaimCampaigns合約中的createLockedCampaign函數。在該函數中,攻擊合約會將1.305M USDC存入ClaimCampaigns合約中,然後laimCampaigns合約會將轉入的1.305M USDC批准給攻擊合約使用。
3 調用ClaimCampaigns合約中的cancelCampaign函數。在該函數中,攻擊合約將存入的1.305M USDC提取出來,但在createLockedCampaign函數中批准給攻擊合約的USDC並沒有取消。
4 攻擊合約償還Balancer的閃電貸。
在該交易中,攻擊合約將保存在ClaimCampaigns合約中的1.305M USDC提取走後,ClaimCampaigns合約批准給攻擊合約的1.305M USDC並沒有取消,因此攻擊合約可以直接調用USDC的transferFrom函數再次從ClaimCampaigns合約中轉移走1.305M USDC。這也是交易0xa17fdb804728f226fcd10e78eae5247abd984e0f03301312315b89cae25aa517實現的功能。
通過以上兩筆交易,攻擊者從ClaimCampaigns合約中盜取了1.305M USDC。
除了USDC外,該攻擊者利用此漏洞還從ClaimCampaigns合約中盜取了大量的NOBL Token,加上USDC,總價值超過200萬美元。
本次事件的根本原因是項目方智能合約在實現邏輯上存在代幣批准漏洞,使得攻擊者可以利重復轉移目標合約批准給msg.sender中的Token。
智能合約ClaimCampaigns的createLockedCamaign函數會將msg.sender的Token存入到目標合約中,並將這些Token批准給msg.sender。
cancelCampaign函數會將存入的Token提取出來,但卻並沒有取消代幣的批准。
攻擊者利用此漏洞,直接調用Token的transferFrom函數從目標合約中再次轉移走批准的代幣。
針對本次攻擊事件,我們在开發過程中應遵循以下注意事項:
(1)項目在設計和开發過程中,要保持邏輯的完整性和嚴謹性,尤其是涉及到資產的轉移過程中,在轉移Token時保證同步代幣批准的數量,避免上面轉移走了Token但沒有取消批准的情況。
(2)項目上线前,需要由第三方專業的審計公司進行智能合約審計。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
標題:SharkTeam:Hedgey Finance被攻擊事件分析
地址:https://www.torrentbusiness.com/article/103038.html
標籤:黑客攻擊