Describe the normal behavior in one or more sentences
The SnowmanAirdrop.claimSnowman() function should allow eligible users to claim their airdrop by transferring tokens from the airdrop contract to themselves.
Explain the specific issue or problem in one or more sentences
The function uses the user-controlled receiver parameter as the from address in safeTransferFrom, allowing anyone to transfer tokens from any address that has approved the airdrop contract.
Likelihood:
Reason 1 // Describe WHEN this will occur (avoid using "if" statements)
Any user can call claimSnowman() with an arbitrary receiver address. If any legitimate user has approved the SnowmanAirdrop contract to spend their tokens, an attacker can drain those tokens.
Reason 2
Users who have interacted with the protocol and granted approvals are at immediate risk. The attack requires no special conditions and can be executed by anyone.
Impact:
Impact 1
Complete loss of funds for any user who has approved the SnowmanAirdrop contract. All approved tokens can be stolen.
Impact 2
Breaks core protocol functionality and trust. Users will lose confidence in the entire Snowman ecosystem if their tokens can be arbitrarily transferred.
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.