When users interact with the Staking Pool, through the Priority Pool by calling functions like PriorityPool::executeQueuedWithdrawals(), deposit(), depositQueuedTokens(), performUpkeep(), claimLSDTokens() or StakingPool::burn() there is a call at some point to:
These functions are used to calculate the amount of liquid staking tokens that corresponds to an amount of shares or the opposite. As can be seen the returned value is heavily reliant to variables like totalStaked and totalShares. They are also retrieved when distributing rewards and fees:
Here minting new shares ensures that the system fairly reflects the fees distributed. However currently the protocol lack slippage protection mechanism. This could lead to fund loss from slippage when core functions are called as the provided formula or variables are manipulatable while users transactions are pending in the mempool by depositing, burning or donating for instance.
Manual Review
When introducing shares to a prootcol having min expected amount variables are obligatory. Allow users to specify a slippage tolerance when interacting with the forementioned functions
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.