The SnowmanAirdrop contract should implement EIP-712 signature verification with replay protection to ensure signatures can only be used once and within a specific time window.
The MESSAGE_TYPEHASH and SnowmanClaim struct lack nonce and deadline fields, making signatures reusable across different contract deployments and without expiration, creating a critical replay attack vulnerability.
The contract implements EIP-712 signature verification but omits critical replay protection mechanisms, allowing malicious actors to reuse valid signatures indefinitely.
The signature verification in _isValidSignature() 2 and message hashing in getMessageHash() 3 use this incomplete structure.
Reason 1: Signatures are permanently valid without deadline enforcement
Reason 2: No nonce tracking allows unlimited reuse of the same signature
Impact 1: Signatures can be replayed across different contract deployments, bypassing verification
Impact 2: Malicious actors can reuse old signatures to claim NFTs indefinitely, compromising the entire airdrop mechanism
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.