The mintSnowman function should only allow authorized addresses (like SnowmanAirdrop contract) to mint NFTs.
The minSnowman function in Snowman lacks proper access restrictions. Although the Snowman contract is inherits the OpenZeppelin's Ownable contract, the function is missing the onlyOwner modifier, allowing everyone to mint Snowman NFTs for free.
Relevant Github link
Likelihood:
Anyone can call mintSnowman function at any time without limits
No special requirements or checks to stop people from minting
Impact:
NFTs that should only be received by Snow token stakers can be minted freely by anyone
Makes the system useless becasue:
No one will buy Snow tokens
No one will wait to earn Snow tokens
No one will stake their tokens
The airdrop system doesn't work as planned
The following test demonstrates how any address can freely mint Snowman NFTs without restrictions. This breaks the intended staking mechanism.
Add the onlyOwner modifier of Ownable contract to the mintSnowman function so that only the authorized airdrop contract can mint NFTs ensuring the staking mechanism works as intended
The mint function of the Snowman contract is unprotected. Hence, anyone can call it and mint NFTs without necessarily partaking in the airdrop.
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.