claimCut updates state and then calls _transferReward which calls i_token.transfer. If the token is a malicious ERC20 with a hook on transfer (ERC777 or similar), the attacker can re-enter claimCut before the state update completes. While playersToRewards[player] = 0 is set before the transfer, remainingRewards is decremented before transfer creating a window.Explain the specific issue or problem in one or more sentences
More critically, closePot calls _transferReward inside a loop with no reentrancy guard - a malicious claimant receiving funds can re-enter closePot during the loop and drain remaining funds.
Likelihood:
Protocol supports "Standard ERC20 Tokens Only" per scope - reduces but doesn't eliminate risk
Any ERC777 or token with transfer hooks is exploitable
Impact:
Complete drain of pot funds
All claimants lose their rewards
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.