BlockSec Phalcon 모니터링에 따르면 DBXen 스마트계약이 3월 12일 오전 공격을 받아 약 15만달러(미화 기준) 규모의 손실이 발생했다.
BlockSec은 근본 원인으로 ERC2771 트랜잭션 처리 과정에서 발신자 신원이 일관되지 않게 사용된 점을 지목했다. `burnBatch()` 함수에서 `gasWrapper()` 데코레이터는 `_msgSender()`(실제 사용자)를 기준으로 상태를 갱신하지만, 콜백 함수 `onTokenBurned()`는 `msg.sender`(포워더 주소)를 사용한다.
이로 인해 소각 수량 관련 변수 `accCycleBatchesBurned`는 사용자 기준으로 기록되는 반면, `lastActiveCycle`은 포워더 기준으로 잘못 업데이트된다. 이런 불일치로 `claimFees()`와 `claimRewards()` 로직이 정상 동작하지 않게 되고, `updateStats()`가 사용자에 대해 실행될 때 계약은 처리되지 않은 소각 배치가 존재하는 것으로 오판해 보상과 수수료를 과도하게 계산하게 된다.
BlockSec은 이러한 설계 취약점을 악용해 공격자가 초과 분 보상과 수수료를 반복적으로 인출하는 방식으로 자금을 빼돌린 것으로 분석했다.


