In StakingPool there is a function named updateStrategyRewards:
It is used to distribute rewards/fees based on balance changes in strategies since the last update. However, as we can see every strategy can call for other strategies which can cause problems.
Let's have the following scenario:
There are Strategy A and Strategy B.
Strategy A calls updateStrategyRewards with Strategy B's Id.
The call is successful and Strategy A is able to update rewards for Strategy B which should not be happening.
The impact of such a vulnerability can be big especially in the case in which one of the strategies turns out to be malicious (for example the ownership of the strategy is stolen) and the StakingPool's owner is slow to react to this. It can lead to malicious or unintentional updates of rewards.
Manual Review
Implement a better access control over the updateStrategyRewards function which compares strategy Id to the msg.sender.
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.