Function MysteryBox::claimAllRewards does not follow CEI pattern and this allows to re-enter to the function and claim rewards again before the rewards array for the user is deleted.
Function MysteryBox::claimAllRewards deletes rewardsOwned array with the user's rewards after sending the rewards to the user:
This allows to re-enter to the function and claim the rewards again.
An attacker can withdraw all funds from the contract.
Manual review
Change the function to follow CEI pattern as below:
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.