Description:
For first-time claimers, the function pushes ETH via 'call{value: sepEthAmountToDrip}("")'. If the recipient is a contract whose 'receive/fallback' reverts, the entire 'claimFaucetTokens' transaction reverts—no tokens are delivered. Users with smart-contract wallets (or misconfigured receive hooks) are DoS’ed.
Impact
First-time claimers using contract wallets can be permanently blocked from receiving tokens due to an ETH receive failure.
Operational fragility if ETH transfers intermittently fail.
Proof of Concept:
A contract that rejects ETH causes token claim to revert:
Mitigation:
Switch to a pull-payment model: record ETH entitlement (e.g., 'ethOwed[user] += sepEthAmountToDrip)' and let the user withdraw via a separate 'withdrawETH()' call.
Alternatively, make ETH optional: proceed with token claim even if ETH transfer fails, and let users claim ETH later.
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.