It is possible to remove boost delegation for a specific user or pool even if the contract is paused, which should not be allowed, as the operation involves a state update
In the `BoostController.sol` there are functions in which user can delegate and remove delegation from other users. These functions update both the userBoosts and poolBoosts mappings, where the boosts of the users and pools are tracked. It is not possible to delegate boosts if the contract is in the paused state, however there is no check if the contract is paused when removing delegation.
According to the official RAAC documentation, emergency control must be able to pause all operations. However, this is not the case for removeBoostDelegation. One could argue that this is not critical, as there is a check to determine whether the delegation has expired, but there are updates to the poolBoosts mapping, where the pool's totalBoost, workingSupply, and lastUpdateTime are updated.
Add this test to the BoostController.test.js and see that it will pass:
The state is updated when the contract is paused. While the likelihood of this happening is relatively high, the current impact is medium
Manual Review
Add whenNotPaused modifier to the removeBoostDelegation function:
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.