Normal behaviour: The contract should track how much Sepolia ETH is dripped per calendar day in dailyDrips, and enforce dailySepEthCap so the faucet cannot exceed the daily ETH budget. The counter should reset once per new day only.
Problem: In claimFaucetTokens(), the else branch (executed when the caller has already claimed ETH before, or when drips are paused) sets dailyDrips = 0. This lets any non-first-time claimer (or calls during pause) forcibly reset the counter mid-day, allowing subsequent first-time claimers to receive ETH even after the daily cap has been reached.
Likelihood:
Occurs whenever a non-first-time claimer calls claimFaucetTokens() during the same day, or during periods where sepEthDripsPaused is true.
Happens under normal usage: once some first-timers have consumed part of the daily cap, any subsequent non-first-time claim can zero out the counter.
Impact:
Daily ETH cap is bypassed, allowing the contract to distribute more ETH than budgeted for the day.
ETH funds can be drained faster than intended, breaking expected economic controls.
Explanation: The sequence consumes the daily cap with two first-time claims (0.01 + 0.01 = 0.02). A non-first-time claimer then calls claimFaucetTokens() and triggers the else branch, which sets dailyDrips = 0. This mid-day reset allows another first-time claimer to receive ETH again, exceeding the daily budget. In a full Foundry test, you would prepare nonFirst as a returning user by performing their initial claim on a prior day (or manipulating storage/warp) to ensure they hit the else path.
Explanation: DailyDrips must reset only when the calendar day changes, not based on caller type or paused state. Remove the dailyDrips = 0 assignment from the else path and centralize all “daily” resets behind a day-bucket check (block.timestamp / 1 days).
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.
The contest is complete and the rewards are being distributed.