According to the standard ERC20 pattern, burning tokens from another address requires the token holder to first approve the burner to spend their tokens. The approval mechanism ensures token holders maintain control over who can transfer or burn their tokens, similar to how transferFrom() requires approval before moving tokens.
The SantaToken.burn() function burns tokens from an arbitrary from address without checking for approval or verifying that msg.sender has permission to burn those tokens. While restricted to calls from the SantasList contract, this creates a dangerous dependency where any bug or vulnerability in SantasList can result in unauthorized token burning.
Likelihood:
The SantasList contract calls this burn function whenever buyPresent() is invoked, directly burning tokens from the provided address parameter without any approval verification
Combined with the inverted logic in buyPresent(), this function enables immediate exploitation where attackers burn victims' tokens on every call
Impact:
Violates the ERC20 standard security pattern where token owners must explicitly approve others to spend or burn their tokens before any transfer occurs
Creates a systemic vulnerability where any bug in the SantasList contract (such as the inverted buyPresent() logic) can result in unauthorized burning of user tokens without their consent
Users lose control over their own tokens, as they can be burned without approval through any vulnerable function in SantasList that calls burn()
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.