The MysteryBox::openBox, MysteryBox::transferReward, MysteryBox::claimAllRewards and MysteryBox::claimSingleReward functions are not aligned with the Checks-Effects-Interactions practice that ensures that all checks are done first, followed by effects (such as changing the storage variables) and then interactions (such as sending rewards). This practice is recommended to be followed to mitigate any risk of reentrancy attacks. Any changes to storage variables should be done before interacting or calling external contracts.
Example from the MysterxyBox::transferReward function:
Static analysis
Update the storage variable before transfering the reward to the caller.
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.