The mintSnowman
function in the Snowman.sol
contract lacks any access control mechanisms, allowing any external caller to mint unlimited Snowman NFTs without authorization. The function is marked as external
but has no modifiers restricting who can call it, completely bypassing the intended airdrop mechanism that requires users to earn Snow tokens and provide valid Merkle proofs.
In Snowman.sol
This function should only be callable by the SnowmanAirdrop
contract after proper validation of Merkle proofs, signature verification, and Snow token burning. Instead, it's accessible to any address on the blockchain.
Attacker identifies the deployed Snowman
contract address
Attacker calls mintSnowman(attackerAddress, largeAmount)
directly
The function executes without any validation, minting unlimited NFTs to the attacker
Attacker can repeat this process indefinitely or distribute NFTs to multiple addresses
The attack requires no Snow tokens, no Merkle proof, and no signature verification
Example attack transaction:
The entire airdrop mechanism becomes meaningless as anyone can mint NFTs without earning them
All Snowman NFTs lose value due to unlimited supply inflation
Implement proper access control to restrict the mintSnowman
function to authorized callers only:
Restrict to airdrop contract only
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.