2024年5月8日,監測到一起針對BNBSmart Chain 鏈上項目GPU攻擊事件,攻擊hash爲:https://bscscan.com/tx/0x2c0ada695a507d7a03f4f308f545c7db4847b2b2c82de79e702d655d8c95dadb
被攻擊的項目爲GPU,攻擊共造成32400 USD的損失。
攻擊者首先從DODO中利用flashloan借貸了226007 BUSD
隨後,在PancakeSwap中將這些BUSD兌換爲GPU Token ,共兌換了26992 GPU。
接着,攻擊者就通過transfer持續給自己轉账,
漏洞就出現在GPU Token的transfer函數,如下圖:
可以看到,GPU Token的transfer最終調用的是父合約的_transfer函數,也就是ERC20合約的_transfer函數,如下圖所示:
由上面的代碼,我們可以看到,在進行transfer時,先保存from和to的balance到變量
senderAmount和recipientAmount,隨後計算轉账後的senderAmount和recipientAmount的值,最後在更新到balances中。但是,當from和to爲同一地址時,先更新from再更新to其實就是給to憑空添加了amount數量的token。所以,攻擊者通過持續給自己轉账從而讓自己的GPU Token憑空增多。
最後,通過PancakeSwap將攻擊獲得的GPU Token兌換爲BUSD,獲利32400 USD。
本次漏洞的成因是在GPU Token的transfer函數邏輯處理問題,且沒有對用戶輸入進行驗證。導致攻擊者在給自己轉账時自己持有的GPU Token會憑空增多。建議項目方在設計經濟模型和代碼運行邏輯時要多方驗證,合約上线前審計時盡量選擇多個審計公司交叉審計。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。