The MerkleAirdrop contract is designed to allow eligible users to claim their allocated tokens by calling the claim() function with their address, amount, and Merkle proof, with the expectation that users initiate their own claims.
The claim() function accepts an account parameter that specifies the recipient address, allowing any third party to submit a claim transaction on behalf of any eligible user without their permission or signature, enabling front-running, griefing, and MEV extraction attacks.
Likelihood:
MEV bots continuously monitor the mempool for profitable transactions and will detect pending claim transactions with public Merkle proofs
Attackers can trivially extract proof data from any pending claim transaction in the mempool and front-run it with higher gas prices
Users' Merkle proofs become publicly known as soon as they submit their first claim transaction, making them vulnerable to front-running
The economic incentive exists for bots to claim on behalf of users and charge relay fees through private mempools
Impact:
Users waste gas fees when their claim transactions revert after being front-run by bots or attackers
Griefing attacks where malicious actors force users to receive tokens at inopportune times, potentially creating tax implications or unwanted token exposure
MEV extraction where bot operators claim airdrops on behalf of users through private mempools and charge hidden fees
Phishing opportunities where attackers claim tokens for users first, then send fraudulent messages claiming the first airdrop was fake
Require msg.sender to be the recipient (Recommended for simplicity)
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.