The claimFaucetTokens() function contains a critical reentrancy vulnerability where external calls are made before state updates. The function transfers ETH to the caller via call.value() before updating critical state variables like lastClaimTime and dailyClaimCount. This violates the checks-effects-interactions pattern and allows malicious contracts to reenter the function multiple times.
Impact:
Fund Drainage: Attackers can drain both ETH and tokens from the contract in a single transaction
Bypass Protection Mechanisms: Reentrancy can bypass daily limits, cooldown periods, and ETH claim restrictions
Economic Attack: Malicious actors could claim unlimited tokens and ETH, destroying the faucet's economic model
Contract Bankruptcy: Complete drainage of contract funds affecting all legitimate users
Proof of Concept:
Recommended Mitigation:
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.