Snowman::mintSnowman is external with no access control, so anyone can mint arbitrary Snowman NFTs directly, bypassing the entire Snow-staking + Merkle + signature airdrop.
The protocol intends that only the SnowmanAirdrop contract mints Snowman NFTs (after a user stakes/"burns" their Snow in claimSnowman). But mintSnowman has no onlyOwner / onlySnowmanAirdrop guard, so any address can mint any number of NFTs to anyone without owning Snow or providing a valid Merkle proof or signature.
Likelihood: High — any external account can call it at any time, with no preconditions.
Impact: High — unlimited free minting; NFT supply is uncapped, the staking/airdrop is fully bypassable, the collection is rendered worthless, and all legitimate recipients are diluted.
Add to test/TestSnowmanAirdrop.t.sol and run forge test --mt test_AnyoneCanMintSnowmanForFree. The test passes — 1000 NFTs are minted to an address that holds zero Snow:
Restrict minting to the airdrop contract:
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.