mintSnowman() lacks any access control, allowing any external caller to freely mint an unlimited number of NFTs to any address, which completely undermines the collection's scarcity and intended airdrop mechanism.The protocol is designed around a specific user flow: users acquire Snow (ERC20) tokens and stake them in the SnowmanAirdrop contract. This contract then validates their eligibility (e.g., via Merkle proofs) and calls the Snowman.sol contract to mint the corresponding Snowman (ERC721) NFTs for the user. This makes the SnowmanAirdrop contract the sole, authorized minter.
The critical vulnerability is that the mintSnowman function in the Snowman.sol contract is external with no access control. This means any user can call it directly, bypassing the SnowmanAirdrop contract entirely. An attacker can mint any number of NFTs without ever needing to acquire or stake a single Snow token, rendering the core economic and distribution mechanism of the protocol completely useless.
Likelihood: High
Any user who discovers the public mintSnowman function can immediately abuse it.
Impact: High
Complete Bypass of Staking and Airdrop Mechanism: The entire intended logic—earning/buying Snow, staking it, and claiming via Merkle proof in SnowmanAirdrop—is made obsolete. Attackers can acquire the final reward (the NFT) without participating in the protocol.
Destruction of Snow Token Utility: Since the Snowman NFTs can be minted for free, the Snow token, whose primary purpose is to be staked for these NFTs, loses all its utility and economic value.
The following test demonstrates that an attacker, without holding any Snow tokens or interacting with the SnowmanAirdrop contract, can directly call mintSnowman to mint NFTs for free.
Enforce strict access control on the mintSnowman function to ensure it can only be called by the legitimate SnowmanAirdrop contract. This restores the intended protocol flow and protects the integrity of the NFT supply.
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.