The selectWinner() function makes an external call to transfer the prize pool to the winner before updating critical state variables (raffleStartTime, players array, previousWinner). If the winner is a malicious contract with a fallback function, it can re-enter selectWinner() or other functions.
Likelihood:
Requires winner to be a malicious contract
Attacker can manipulate randomness to ensure they win (see CRIT-01)
Impact:
Re-entrancy could allow double-spending of prize pool
State corruption if re-entering other functions
Potential to drain contract funds
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.