cancelRegistration()
and calling back the predictor contract after receiving their refund. This process drains all the funds in the contract due to a missing check-effect-interaction pattern.forge t --mt test_AttackerCanSteallAllFunds -vv
To generate the traces below [PASS] test_AttackerCanSteallAllFunds() (gas: 2094527) Logs:
Attacker balance before cancelling = : 0.000000000000000000
ThePredicter balance before cancelling = : 1.240000000000000000
Attacker balance after cancelling = : 1.240000000000000000
ThePredicter balance after cancelling = : 0.000000000000000000
unknown
status, it is recommended to change the status of user back to unknown
before sending back the funds to the user.Reentrancy of ThePredicter::cancelRegistration allows a maliciour user to drain all funds.
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.