dailyDrips reset to zero when caller is ineligible for ETH drip, so daily ETH quota (dailySepEthCap) can be bypassed, allowing excessive ETH distributionInside RaiseBoxFaucet::claimFaucetTokens(), the contract resets dailyDrips to zero for any caller who is not eligible to receive the Sepolia ETH drip:
This means that every time a user who has already claimed ETH, or when sepEthDripsPaused == true, calls claimFaucetTokens(), the global counter tracking daily ETH distribution (dailyDrips) is wiped to zero. Resetting it effectively removes the limit, allowing additional claimers on the same day to receive more ETH than permitted by dailySepEthCap.
Likelihood:
This behavior occurs whenever a returning user (who has already received their first-time ETH drip) calls claimFaucetTokens() during the same UTC day, triggering the else { dailyDrips = 0; } branch.
It also occurs whenever ETH drips are paused via toggleEthDripPause(true) and any user claims tokens, resetting the counter and allowing new claims to restart the ETH distribution cycle mid-day.
Impact:
The daily ETH distribution cap (dailySepEthCap) can be fully bypassed, leading to uncontrolled ETH outflow from the faucet within a single day.
Paste the following test in RaiseBoxFaucet.t.sol:
dailyDrips should only reset when the day rolls over
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
View preliminary resultsAppeals are being carefully reviewed by our judges.
The contest is complete and the rewards are being distributed.