Missing fee check in constructor can cause DoS of updating the fee
In stake.link protocol maximum fee amounts for the receivers are predetermined by the protocol. We saw many fee amount checks while adding and updating fees. But this check is not implemented in constructor in LSTRewardSplitter
:
Normally, admin inputs are not considired valid findings but this problem can make the fees can't be updateable. So, normally if admin sets incorrect fees in the constructor he/she can update it after deployment in update fee function
But this is not the case in some situations. For instance in following scenario:
Admin put 10 fee receivers and each receiver has 1500 basis points.
It exceed 10000 max point , so it's invalid input from admin.
Admin wants to update the basis of the receivers in order to make it correct.
Admin can change the basis points one by one to 300 level which is valid fee.
It's not possible because updateFee will revert whle updating single fee receiver
15000 is total basis points will be 13800 after update and it will revert because it's still higher than 10000
Denial of Services on updateFee()
function and some functions will be locked and cause some other DoS.
Manual Review
Implementing a check to constructor will solve it
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.