BlockSec: DBXen contract attacked, loss of approximately $150,000
BlockSec: Контракт DBXen подвергся атаке, убытки составили около 150 000 долларов США.
PANews сообщила 12 марта, что, согласно мониторингу BlockSec Phalcon, утром контракт DBXen подвергся атаке, в результате которой были понесены убытки в размере примерно 150 000 долларов США. Причиной атаки является несоответствие идентификатора отправителя в транзакциях ERC2771. В функции burnBatch() декоратор gasWrapper() использует _msgSender() (фактический пользователь) для обновления состояния, в то время как функция обратного вызова onTokenBurned() использует msg.sender (переадресатор). Это приводит к тому, что accCycleBatchesBurned регистрирует данные для пользователя, а lastActiveCycle ошибочно обновляется для переадресатора. Эта несогласованность нарушает логику функций claimFees() и claimRewards(). Когда функция updateStats() выполняется для пользователя, контракт ошибочно предполагает, что существуют необработанные пакеты сжигания, поскольку accCycleBatchesBurned был обновлен, в то время как lastActiveCycle не был обновлен, что приводит к неверному расчету вознаграждений и комиссий, позволяя злоумышленнику извлекать избыточные средства для получения прибыли.