Attacker can call buyPresent() which burn token of another user and get back santasList NFT (mint nft without token)
function buyPresent() will burn SantaToken in presentReceiver but will mint & send nft santasList to msg.sender() which can different with presentReceiver. Attacker can call buyPresent() with presentReceiver is address of another user have token and get back nft without lost any their token.
Test POC:
Attacker can mint and get nft with user money without their permission.
Manual review & Foundry
Burn token from msg.sender() instead of receiver.
Current implementation allows a malicious actor to burn someone else's tokens as the burn function doesn't actually check for approvals.
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.