Description: The contract uses .call()
for ETH transfers without following the checks-effects-interactions pattern, making it vulnerable to reentrancy attacks. Multiple locations including RockPaperScissors::_finishGame()
, RockPaperScissors::_handleTie()
, and RockPaperScissors::_cancelGame()
functions
Impact: An attacker could potentially drain ETH from the contract by recursively calling these functions.
Proof of Concept:
Recommended Mitigation: Use the checks-effects-interactions pattern and consider using OpenZeppelin's ReentrancyGuard.
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.