Normal Behavior: Each eligible address should only be able to claim their Snowman NFT once using a valid Merkle proof and signature.
Issue: The contract does not check if a user has already claimed. The s_hasClaimedSnowman
mapping is updated only after state changes and is never read before execution. This allows any valid claimant to repeatedly call claimSnowman()
and mint multiple NFTs.
Likelihood:
The Merkle tree and signature are static; users can re-submit them any time.
There's no guard preventing repeated calls to the claim function
Impact:
Any eligible user can infinitely repeat the claim and mint function.
Token distribution becomes exploitable, leading to over-minting and broken economics.
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.