The addSplitter function in the LSTRewardsSplitterController contract is responsible for creating and registering new LSTRewardsSplitter instances for accounts. It's a key administrative function for managing the reward distribution system.
The vulnerability lies in the function's failure to validate the fee structure passed to the new LSTRewardsSplitter. This can lead to the creation of splitters with invalid or malicious fee configurations.
Invalid Fee Structures: Splitters could be created with fee structures that exceed 100% or have other invalid configurations.
Potential for Fund Lock: If a splitter is created with an invalid fee structure, it could lead to funds being locked or distributed incorrectly.
System Integrity Compromise: The overall integrity of the reward distribution system could be compromised if invalid splitters are introduced.
The owner, either maliciously or by mistake, calls addSplitter with a fee structure where the total fees exceed 100%.
A new LSTRewardsSplitter is created with this invalid fee structure.
When rewards are split, the splitter attempts to distribute more than 100% of the rewards, potentially leading to reverts or unexpected behavior.
Funds could become locked in the splitter, or distributed incorrectly, compromising the entire reward system for that account.
To address this issue, we should implement validation of the fee structure before creating the new splitter:
Add a function to calculate the total of all fees.
Validate that the total fees do not exceed 100% before creating the splitter.
Optionally, add additional checks for other potential fee structure issues.
This fix ensures that only valid fee structures are used when creating new splitters, maintaining the integrity of the reward distribution system and preventing potential fund locks or distribution errors.
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.