The claimSingleReward function is also vulnerable to a reentrancy attack, similar to the claimAllRewards function.
The claimSingleReward function sends Ether to the caller before updating the state, allowing for potential reentrancy:
High. An attacker could repeatedly claim the same reward, draining more Ether than they should receive.
Manual code review
Implement the checks-effects-interactions pattern:
First, store the value and delete the reward
Then, transfer the Ether
Consider using OpenZeppelin's ReentrancyGuard contract to add a nonReentrant modifier to sensitive functions.
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.