BlockSec:DBXen合約遭遇攻擊,損失約15萬美元
事件概要
根據BlockSec Phalcon監測,DBXen合約於今日上午遭遇攻擊,估計損失約15萬美元。此事件的根本原因在於ERC2771元交易下發送者身份不一致。
技術細節
在burnBatch()函數中,gasWrapper()修飾器使用_msgSender()(實際用戶)更新狀態,而回調函數onTokenBurned()則使用msg.sender(轉發器)。這導致accCycleBatchesBurned為用戶記錄,但lastActiveCycle錯誤地為轉發器更新。
此不一致性破壞了claimFees()與claimRewards()的邏輯。當為用戶執行updateStats()時,合約錯誤地認為存在未處理的已銷毀批次,因為accCycleBatchesBurned已更新而lastActiveCycle未更新,進而錯誤計算獎勵和費用,使攻擊者得以提取超額資金獲利。
相關連結
來源:https://www.panewslab.com/zh/articles/019ce117-21df-7712-99f9-80be5079ee1a
