Presumably a mistake within BoostController::getBoostMultiplier causes the function to either return MIN_BOOST for userBoost.amount == 0 and MAX_BOOST for any other amount of userBoost.amount != 0.
BoostController::getBoostMultiplier
Looking at the highlighted lines within getBoostMultiplier we can see see on the first mark that the function returns MIN_BOOST for userBoost.amount == 0 as intended, the issue however arises in the 2nd and 3rd marker:
And as we can see here, any other path besides userBoost.amount == 0 will result in MAX_BOOST returned here.
The intended behavior seems to be a linear progression between MIN_BOOST and MAX_BOOST proportional to the users amount staked to reward users contributing a higher stake with a higher boost, the implementation however does not return values of a linear progression.
The likelihood is evidently high, the impact though only a medium since we are only talking about rewards, and users would at least still get them, even though more than intended by the protocol.
This leaves the conclusion to rate the total severity as a Medium.
Manual Review
Implement a linear boost calculation, following the formulas used in other places within the contract.
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.