There is no limit on the amount of reward tokens that can be claimed. The balance could be drained.
Reentrancy attack could occur in the claimable function of the Staking.sol. The function could be vulnerable to a reentrancy attack because it calls the updateFor function, which updates the user's index and claimable rewards. If an attacker were to call the claimable function while the updateFor function was still executing, the attacker could potentially withdraw more rewards than they are entitled to.
The balance could be drained
Manual code review
A way to prevent a reentrancy attack is to use the lock statement. The lock statement prevents other functions from being called while the lock statement is executing. This can be used to ensure that the updateFor function has finished executing before the claimable function withdraws rewards. For example, the following code would prevent a reentrancy attack using the lock statement:
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.