The claimSnowman function uses ECDSA signatures but has no nonce or deadline checks.
Lines 69-79 show signature verification without nonce or deadline. Signatures can be replayed and never expire.
Likelihood: Medium — Anyone with a valid signature can replay it
Impact: Medium — Users can claim multiple times; signatures valid forever
User generates valid signature for their claim
User claims once, receives NFTs
User uses the SAME signature to claim again
Claim succeeds again (no nonce)
Signature remains valid forever (no deadline)
Add nonce mapping: mapping(address => uint256) public nonces
Add deadline parameter to function
Include nonce and deadline in signed message hash
Check block.timestamp < deadline
Increment nonce after each use
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.