Normal behavior:
Cryptographic signatures used for claiming NFTs should be single-use only. This prevents attackers from reusing valid signatures to repeatedly claim rewards or steal user allocations.
Issue:
The contract validates signatures without any nonce mechanism. As a result, a valid claim signature can be reused indefinitely, either by a malicious actor or a third party who intercepts it. This makes the protocol vulnerable to replay attacks, where stolen or leaked signatures can be exploited to mint NFTs multiple times.
Likelihood:
High — Off-chain signatures are easily intercepted (e.g., via phishing or mempool sniffing).
Reproducibility: Replay is always possible unless explicitly prevented.
Ease of exploitation: Minimal effort required after obtaining a valid signature.
Impact:
NFT theft — Attackers can claim NFTs intended for other users.
Allocation loss — Users lose access to their rightful rewards.
Trust erosion — The system appears broken or rigged to users.
Financial damage — Valuable NFTs may be stolen and sold.
Explanation:
A valid signature is created off-chain for alice.
Attacker intercepts the signed data or reuses it from prior mempool transactions.
They call claimSnowman() on Alice’s behalf and steal the allocation.
There is no nonce check or protection to detect this replay.
Use a nonce-based system to invalidate reused signatures. Every signed claim must include a unique nonce value per user to ensure one-time use.
Explanation:
Fix: Add nonces[receiver] as a required part of the signature.
Security: Guarantees that each signature is valid for only one claim.
Replay prevention: Previously used signatures become invalid once nonce increments.
Standard practice: Follows industry-standard replay protection for signed messages.
This is a critical vulnerability because it enables theft of NFT allocations with no on-chain prevention. Any user with a leaked or reused signature is at immediate risk. Adding a nonce is a proven, low-cost solution with significant security improvement.
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.