Anyone Can Mint Snowman NFTs Directly, Bypassing Staking Logic
The mintSnowman(address receiver, uint256 amount)
function in the Snowman
contract is marked external
and publicly callable by anyone. There is no access control or validation to ensure that:
The caller is the trusted SnowmanAirdrop
contract
The receiver
is eligible
The minting amount corresponds to actual staking behavior
According to the developer's design, NFTs should only be minted:
Through staking Snow
tokens in SnowmanAirdrop
After verifying Merkle proof, signature, and Snow balance
However, because mintSnowman
is external
and unprotected, anyone can call it directly and mint themselves any number of Snowman NFTs, completely bypassing all eligibility rules.
Risk
Likelihood:
Extremely High — the function is external
, public, and requires no checks
Can be discovered and exploited by anyone scanning the contract ABIReason 2
Impact:
Bypasses all staking and claim verification
Allows minting NFTs without owning or staking Snow tokens
Destroys reward integrity and devalues the NFT
Restrict access to Snowman::mintSnowman()
so it can only be called by the SnowmanAirdrop contract:
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.