The RaiseBoxFaucet::claimFaucetTokens function advertises a reward of 0.005 ETH for first-time claimers. However, the contract fails to guarantee this reward due to two critical issues:
1.No explicit ETH transfer declaration or enforcement: The ETH is sent using a low-level call:
This call is silent on failure and does not revert if the transfer fails. If the contract lacks ETH or the call fails, the user receives nothing — and the function continues as if the reward was delivered.
2.No tracking or accounting of ETH rewards: There is no mapping, event, or state variable to record how much ETH each user has received. This makes it impossible to audit ETH distribution, enforce limits, or detect abuse.
Impact:
Users may receive no ETH despite claiming for the first time.
Silent failures: No error or revert if ETH transfer fails.
No visibility into ETH distribution.
No enforcement of ETH caps or budget.
Undermines trust in the faucet’s reliability and fairness.
*Proof of Concept *
Recommended Mitigation
1.Declare ETH reward constant:
2.Track ETH distribution per user:
3.Update tracking after successful transfer:
4.Emit event for transparency:
5.Add transfer failure handling:
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.