mintSnowman has no access control, so anyone can mint unlimited Snowman NFTs and completely bypass the airdrop mechanism.
As I understand the protocol's logic, only the airdrop contract should call mintSnowman, after the user has proven eligibility and deposited their Snow tokens.
However, there is a mistake: anyone can access this function and mint as many NFTs as they want.
The contract does define the SM__NotAllowed error, but never uses it, probably by oversight.
Likelihood: High. Any EOA or contract can call the function directly. There are no preconditions and the only cost is gas.
Impact: High. The entire airdrop mechanism (Merkle proof, signature check, Snow staking) is bypassed. The NFT supply becomes unlimited, so NFTs that users legitimately claimed lose their value.
The following test shows that a random attacker can mint 100 NFTs without going through the airdrop.
Restrict minting to the airdrop contract only. Since SnowmanAirdrop is deployed after Snowman, set its address once through an owner-only setter.
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.