dailyDrips is reset to 0 in the else branch of the ETH-drip logic (executed when caller already claimed ETH before or drips are paused), independent of day rollover. This wipes daily accounting mid-day, allowing additional first-time claimers to receive ETH beyond the cap.
Attack Path:
A first-time user claims, consuming part of the daily cap (dailyDrips += sepEthAmountToDrip).
A returning user (or any claim while drips are paused) calls claimFaucetTokens, resetting dailyDrips = 0 mid-day.
Additional first-time users claim and receive ETH again, allowing the total for that day to exceed dailySepEthCap.
Likelihood:
This issue will occur whenever a returning user who has previously claimed ETH calls claimFaucetTokens on the same day that other new users are claiming. The else branch is executed for such users, resetting dailyDrips to 0 mid-day and reopening the faucet cap unintentionally.
This will also occur whenever sepEthDripsPaused is toggled on and a claim attempt is made during the same day, since the else branch executes again and zeroes out dailyDrips. Once the pause is lifted, new claimers can exceed the intended daily ETH distribution cap.
Impact:
Daily ETH distribution invariant can be broken: total ETH dripped in a single day can exceed dailySepEthCap.
Faucet ETH can be drained faster than intended.
Daily telemetry/accounting becomes unreliable.
Parameters: sepEthAmountToDrip = 0.01 ETH, dailySepEthCap = 0.02 ETH.
userA claims (first-time) --> dailyDrips = 0.01.
returningUser claims (already claimed on a previous day) --> BUG: dailyDrips reset to 0.
userB and userC claim (first-time), pushing total dripped today to 0.03 ETH > 0.02 ETH cap.
Expected: Total ETH dripped per day must never exceed dailySepEthCap (userC should not receive ETH in the scenario above).
Actual: Total dripped today equals 0.03 ETH, exceeding the 0.02 ETH cap due to dailyDrips being reset mid-day.
Remove the mid-day reset by removing the else statement block, as shown below:
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.