The external function buyPresent()
burns the SantaTokens of the presentReceiver
. This results in a txn fail scenario.
The external function buyPresent()
is intended to allow EXTRA_NICE
users (addresses holding a SantaToken balance >= 1e18) to buy/mint an NFT for another user, as implied by the address
param labeled presentReceiver
.
Currently, the buyPresent()
function burns 1 (1e18) SantaToken from the presentReceiver
address, as shown below.
This causes the txn to fail due to an arithmetic underflow error, since it attempts to burn from the presentReceiver
's address, whose balance is likely 0
.
A PoC test written in forge demonstrates a user being checked as EXTRA_NICE
, obtaining SantaTokens, and trying to buy a present for a friend. The txn will fail, resulting in a passed forge test (as indicated by the testFail_
prefix).
Users whose Status is EXTRA_NICE
and/or owners of SantaTokens will be unable to mint NFTs for others.
Forge
Change the parameter passed into the i_santaToken.burn()
function in buyPresent()
from presentReceiver
to msg.sender
. As shown below:
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.