Description: SnowmanAirdrop::claimSnowman()
calculates the Merkle leaf using the 'balanceOf(receiver)' at claim time, instead of using the static amount from the original Merkle snapshot.
Impact: If the user’s balance changes after the Merkle tree is built, their Merkle proof will no longer be valid, and the claim will fail.
Proof of Concept: Include the following test in the TestSnowmanAirdrop.t.sol
file:
Recommended Mitigation: Use amount from Merkle input (passed via signature or as an argument), not balanceOf:
Claims use snow balance of receiver to compute the merkle leaf, making proofs invalid if the user’s balance changes (e.g., via transfers). Attackers can manipulate balances or frontrun claims to match eligible amounts, disrupting 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.