The dailyDrips counter incorrectly resets to zero whenever a user who has already claimed ETH makes another token claim, or when ETH drips are paused. This completely bypasses the daily ETH distribution cap, allowing unlimited ETH to be distributed per day.
The normal and expected behavior is that dailyDrips should only be reset to zero when a new day begins (tracked by comparing currentDay > lastDripDay). The variable should accumulate throughout the day to properly enforce the dailySepEthCap limit on total ETH distributed.
The critical bug occurs on lines 210-212 in an else block that executes whenever hasClaimedEth[faucetClaimer] is true (returning user) OR sepEthDripsPaused is true (drips are paused). This else block incorrectly resets dailyDrips = 0, which breaks the daily cap tracking mechanism. Every time a user who has already received their ETH drip comes back to claim tokens (after the 3-day cooldown), the daily ETH counter is reset, allowing more ETH to be distributed than the configured cap.
Likelihood:
This bug triggers every time a user who has already claimed their ETH drip comes back to claim tokens
After initial claims, most users will be returning users (after the 3-day cooldown)
The bug occurs constantly during normal protocol operations with no special conditions required
It's deterministic and reproducible 100% of the time
Impact:
The daily ETH cap (dailySepEthCap = 1 ETH) becomes completely ineffective and is bypassed
Multiple times more ETH than intended can be distributed per day (potentially unlimited)
The protocol's economic security model is fundamentally broken
The contract could drain its entire ETH balance much faster than the owner intended
First-time users can continue claiming ETH well beyond the daily limit
Owner loses control over the ETH distribution rate
This test demonstrates how the daily ETH cap is completely bypassed due to incorrect reset logic when returning users claim tokens.
The fix is simple: remove the incorrect else block that resets dailyDrips. The variable should only be reset when a new day begins, which is already handled correctly in the existing day boundary 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.