In the LSTRewardsSplitter contract, it can be observed in the addFee and updateFee functions that there is a FeeLimit, and these functions have a check to make sure that _totalFeesBasisPoints is not greater than the hardcoded value 10000
. This check was not done in the LSTRewardsSplitter constructor, where the initial Fee receivers were added.
The FeeLimit for the LSTRewardsSplitter contract, which was hardcoded 10000
can be bypassed during the creation of the LSTRewardsSplitter contract. The initial Fee receivers are added during the contract creation through the constructor but there is no check in the constructor to make sure that the _totalFeesBasisPoints is not greater than 10000.
A fee receiver could potentially receive a percentage greater than 100%, which could divert more funds than intended.
It undermines the logic of the contract, leading to a potential exploit where all funds could be allocated to a single receiver or distributed disproportionately, affecting the fairness of the reward-sharing mechanism.
Manual Review
There should be a validation in the LSTRewardsSplitter contract contructor that ensures the sum of _totalFeesBasisPoints
across all fee receivers does not exceed the limit of 10000
basis points.
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.