In manageUsersInPrivatePool function, it handles batches of operations based on stale currentPoolRate_ data, which is erroneously not updated within the operational loop.
The manageUsersInPrivatePool function is designed to process multiple user operations in a batch.
It uses the currentPoolRate_ variable to calculate the amount(line 131)
However, the vulnerability lies in the fact that currentPoolRate_ is determined before the execution of the batch processing loop and is not updated after each user's operation. (line 140,142)
Since each operation can potentially alter the currentPoolRate_, subsequent operations within the same batch are incorrectly calculated using outdated rate information.
It leads to incorrect calculation of user stakes and withdrawals, potentially causing financial discrepancies.
Manual Review
update the currentPoolRate_ variable within the loop after each user's stake or withdrawal operation is processed.
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.