The claimSnowman
function allows repeated claims because it does not check whether the user has already claimed.
Although the flag s_hasClaimedSnowman[receiver]
is set at the end of the function, there is no require
or revert
at the beginning to prevent duplicate claims.
If the claimSnowman
function does not check if an address has already claimed, the same user can repeatedly call the function and receive Snowman NFTs multiple times.
Likelihood: High
Impact:
Users can claim multiple times, draining the system
Add a guard clause.
Place it at the top of the function before any state-changing logic.
The claim function of the Snowman Airdrop contract doesn't check that a recipient has already claimed a Snowman. This poses no significant risk as is as farming period must have been long concluded before snapshot, creation of merkle script, and finally claiming.
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.