The claimFaucetTokens() function contains unreachable reset logic where the daily counter reset code is positioned after an early revert condition, making it impossible to reset the daily claim counter once the limit is reached.
Users can claim tokens until dailyClaimCount reaches dailyClaimLimit
After 24 hours, dailyClaimCount should reset to 0 to allow new claims
The contract has a critical ordering issue in the claim function:
Line: 179 - 181, 220-223
The vulnerability exists because:
Reset logic is positioned after the limit check
Once dailyClaimCount >= dailyClaimLimit, the function always reverts before reaching reset logic
The counter becomes permanently stuck at the limit value
High
Faucet becomes completely unusable after reaching daily limit
Reset mechanism exists but becomes unreachable once limit is reached
All tokens and ETH become permanently locked in the contract
Owner can temporarily restore functionality by increasing dailyClaimLimit, but this doesn't fix the underlying issue
High
Happens automatically when daily limit is reached through normal usage
Attackers can deliberately trigger this vulnerability using DDoS techniques to reach the limit faster
No external dependencies or special conditions required
Users claim tokens normally until reaching dailyClaimLimit (e.g., 100 claims)
The next day, claimers cannot claim because dailyClaimCount >= dailyClaimLimit still reverts the transaction
UnreachableDailyClaimCountReset.t.sol: https://github.com/Luu-Duc-Toan/2025-10-raisebox-faucet/blob/master/test/UnreachableDailyClaimCountReset.t.sol
Result:
Move reset logic before the limit check:
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.