Repeated Claims
Normal behaviour: Each address should be able to claim its Snowman NFTs once.
Issue: The contract never checks s_hasClaimedSnowman[receiver]
before minting; an attacker can reuse the same proof/signature after topping-up $SNOW and mint unbounded NFTs.
Likelihood
Anyone who still owns any $SNOW can call claimSnowman
again.
Gas cost is low and Merkle proofs / signatures never expire.
Impact
Unlimited NFT inflation destroys the rarity schedule.
$SNOW supply siphoned into the contract (effectively burned).
See test/PoC_SnowmanAirdrop_DoubleClaim.t.sol
.
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.