Discrepancy in pool updates in BoostController can lead to underflow DoS and incorrect state variables values.
Users can delegate their boost to another address using delegateBoost(). Delegation updated userBoosts[msg.sender][to] state variable.
Then user (to address) can remove expired boost delegation using removeBoostDelegation():
The problem is the function not only removes delegation, but also decreases pool boost totals. For comparison, pool boost totals wasn't increased during delegation creation.
Malicious user can create multiple delegations with min duration, and then remove all of them and decrease pool boost totals extremely low values. Thus any other legitimate actions, like boost updates and removals will revert due to uderflow revert in poolBoost.totalBoost:
Discrepancy in pool updates in BoostController
Manual review.
Update pool boost totals consistently.
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.