Snowman::mintSnowman() function has no access checks and anyone can call it to mint an NFT for freeThe mintSnowman() function is supposed to be called by the SnowmanAirdrop contract to mint the NFT to eligible wallets.
However, the function has no access control to make sure that only the Airdrop function can call it
As the function is right now, anyone can call the function as many times as they want and mint NFTs to their own wallets without even interacting with the Airdrop contract
Likelihood:
Always
There is no restriction in calling the function
Impact:
NFTs can be minted for free as many times as the caller wants
NFTs can be minted even without being part of the airdrop
Add the following test case to the test suite of Snowman
There should be a variable that stores the address of the airdrop contract and an owner-only function to update the address of the airdrop. Then a modifier can be created and used to make sure that only the airdrop contract address can call the function
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.