The RaiseBoxFaucet::claimFaucetTokens function sends Sepolia ETH to first-time claimers using a low-level call:
This call transfers ETH without any reentrancy protection. If faucetClaimer is a malicious contract, it could re-enter claimFaucetTokens() or other vulnerable functions before state variables are updated, potentially bypassing cooldowns, limits, or draining funds.
Impact:
Malicious contracts can exploit reentrancy to repeatedly claim ETH.
Faucet funds can be drained beyond intended limits.
Cooldown and daily cap logic can be bypassed.
Undermines trust and security of the faucet protocol.
Proof of Concept:
Put this contract and test to the RaiseBoxFaucet.t.sol to make atest to cheak about the reentrancy of hacker
Recommended Mitigation:
Use OpenZeppelin’s ReentrancyGuard and apply the nonReentrant modifier to claimFaucetTokens():
This ensures that no external call can re-enter the function before state updates complete
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.