It was found that claim() function of Staking.sol doesn't implement checks-effects-interactions pattern therefore leaving the function vulnerable to reentrancy attacks.
the function transfers the claimable balance to the msg.sender first and then in the next line updates the state with claimable[msg.sender] = 0;
An attacker could exploit the contract to re-enter the claim() function several times leading to drain it from funds.
Manual Review.
It is advisable to use checks-effects-interactions pattern and to use nonReentrant() modifier as an added layer of security.
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.