buyPresent debits SantaToken then reaches OpenZeppelin ERC721’s _safeMint, which invokes IERC721Receiver.onERC721Received on contract recipients before returning to buyPresent.
msg.sender modeled as an attacker contract re-calls list.buyPresent(victim) from onERC721Received. Each nested invocation burns 1e18 from victim while balance remains and mints another NFT to the attacker, turning one outer buyPresent into many burns and mints inside one transaction.
Likelihood:
Executes whenever victim holds ≥ 2e18 (or N × 1e18) SantaToken and the msg.sender contract implements onERC721Received.
Impact:
Amplified drain (multiple 1e18 burns) and NFT mint spam atop Finding 2’s wrong-accounting design.
(Pick OZ ReentrancyGuard, check-effects-interactions reordering paired with _mint, or disallow contract recipients.)
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.