Hợp đồng tiền điện tử DBXen bị tấn công sáng 12/03, thiệt hại ước tính khoảng 150.000 USD do lỗi xử lý không nhất quán danh tính sender trong giao dịch ERC2771.Hợp đồng tiền điện tử DBXen bị tấn công sáng 12/03, thiệt hại ước tính khoảng 150.000 USD do lỗi xử lý không nhất quán danh tính sender trong giao dịch ERC2771.

BlockSec: Hợp đồng DBXen bị tấn công, thiệt hại khoảng 150.000 USD

2026/03/12 16:10
Leu 2 min
Para enviar feedbacks ou expressar preocupações a respeito deste conteúdo, contate-nos em crypto.news@mexc.com

Hợp đồng tiền điện tử DBXen bị tấn công sáng 12/03, thiệt hại ước tính khoảng 150.000 USD do lỗi xử lý không nhất quán danh tính sender trong giao dịch ERC2771.

Sự cố xuất phát từ việc dùng hai nguồn sender khác nhau trong cùng luồng đốt token, làm sai lệch trạng thái theo chu kỳ và phá vỡ logic tính toán của các hàm nhận phí và phần thưởng, tạo cơ hội rút tiền vượt mức.

NỘI DUNG CHÍNH
  • DBXen bị tấn công, tổn thất ước tính 150.000 USD.
  • Lỗi do không nhất quán _msgSender() và msg.sender trong ERC2771.
  • Phá vỡ claimFees()/claimRewards(), cho phép rút dư tiền.

Nguyên nhân kỹ thuật: lệch sender giữa _msgSender() và msg.sender

Vấn đề cốt lõi là danh tính sender không đồng nhất trong giao dịch ERC2771, khiến cập nhật trạng thái cho user và forwarder bị lệch nhau.

Trong hàm burnBatch(), decorator gasWrapper() dùng _msgSender() (user thực) để cập nhật state. Nhưng callback onTokenBurned() lại dùng msg.sender (forwarder). Hệ quả: accCycleBatchesBurned được ghi nhận cho user, còn lastActiveCycle bị cập nhật nhầm cho forwarder.

Sự không nhất quán này làm đứt mạch logic theo chu kỳ, tạo ra trạng thái on-chain sai: dữ liệu burned batches và chu kỳ hoạt động không còn khớp cùng một thực thể, dẫn đến các phép tính tiếp theo dựa trên giả định sai.

Cách lỗi dẫn đến rút tiền vượt mức: sai logic claimFees và claimRewards

Khi chạy updateStats() cho user, hợp đồng hiểu nhầm còn burned batches chưa xử lý, làm tính sai rewards và fees, giúp kẻ tấn công rút thêm tiền để hưởng lợi.

Cụ thể, vì accCycleBatchesBurned đã được cập nhật cho user nhưng lastActiveCycle của user không được cập nhật tương ứng, hợp đồng suy luận sai rằng vẫn tồn tại burned batches chưa được xử lý trong chu kỳ. Từ đó, logic của claimFees()claimRewards() bị phá vỡ, dẫn đến việc tính toán phần thưởng/phí cao hơn thực tế.

Theo giám sát, vụ tấn công được ghi nhận vào sáng 12/03 và ước tính gây thiệt hại khoảng 150.000 USD.

Isenção de responsabilidade: Os artigos republicados neste site são provenientes de plataformas públicas e são fornecidos apenas para fins informativos. Eles não refletem necessariamente a opinião da MEXC. Todos os direitos permanecem com os autores originais. Se você acredita que algum conteúdo infringe direitos de terceiros, entre em contato pelo e-mail crypto.news@mexc.com para solicitar a remoção. A MEXC não oferece garantias quanto à precisão, integridade ou atualidade das informações e não se responsabiliza por quaisquer ações tomadas com base no conteúdo fornecido. O conteúdo não constitui aconselhamento financeiro, jurídico ou profissional, nem deve ser considerado uma recomendação ou endosso por parte da MEXC.