Token transfers should follow the checks-effects-interactions pattern to prevent reentrancy, especially if low-level calls or hooks are used in the transfer process.
The Token-0x transfer logic performs external calls before state updates, or uses low-level Yul .call(), leaving the contract exposed to reentrancy, allowing attackers to trigger recursive transfer/transferFrom calls.
Likelihood:
Reentrancy occurs whenever a recipient is a contract with a fallback function.
Minimal attacker effort: simply deploy contract with fallback → receive tokens.
Impact:
Attacker drains balances by calling reentrant transfer() until storage underflows/overwrites.
May bypass allowance logic, drain vaults, or corrupt internal accounting.
Outcome: Recursive fallback drains tokens from sender or global supply.
Add nonReentrant modifier if external calls cannot be removed.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.
The contest is complete and the rewards are being distributed.