FjodPoints::distributePoints() should update lastDistribution when totalStaked = 0.
distributePoints() function is called via checkDistribution modifier whenever a user stakes, unstakes or claims rewards. What this function does is update pointsPerToken and totalPoints state variables if a new epoch has started since last update and there are tokens staked. However, in case there were no token staked it will not update lastDistribution, allowing for the function being called again and having these variables artificially updated.
A user could make pointsPerToken increase a lot by staking tokens when totalStaked = 0 and making another operation that calls distributePoints() again, then other users could benefit from this and get more rewards than they should due to this artificial increasement.
Manual revision
If totalStaked = 0, update lastDistribution timestamp so that rewardsPerToken cannot be updated again until next epoch.
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.