The _applyBoost()
function in BaseGauge.sol
relies on the total veToken supply to calculate boosts. If the totalVeSupply
is low, a user with a small veToken balance can receive an extremely high boost, leading to unfair reward distribution and potential reward manipulation.
Boosting is calculated based on totalVeSupply
. If totalVeSupply
is very low, users with even a tiny amount of veTokens can receive a disproportionately high boost.
The boost calculation does not have an upper limit, meaning a user could manipulate the supply and receive extremely unfair staking rewards.
Boost manipulation can lead to reward pool depletion, making it unfair for other users.
PoC
Attacker stakes a very small amount of veTokens before boosting calculations are performed.
Since totalVeSupply
is low, their veToken balance appears relatively high.
Their boost multiplier is significantly larger than intended, allowing them to claim higher staking rewards than legitimate users.
Other users with normal staking amounts receive disproportionately lower rewards.
Result:
Partially (Excessive rewards can deplete the pool)
Moderate disruption (Unfair distribution of rewards)
Manual Review
Hardhat
Modify _applyBoost()
to limit the maximum boost value and prevent excessive rewards.
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.