The StabilityPool contract improperly includes manager-allocated RAAC tokens in user reward calculations. This allows regular users to drain funds reserved for managers by claiming a disproportionate share of the total RAAC balance through the reward system.
RAAC tokens deposited for managers via depositRAACFromPool() are stored in the same contract balance used for user rewards
The calculateRaacRewards() function uses the total contract RAAC balance (raacToken.balanceOf(address(this))) when determining user rewards
This combination allows users to claim rewards proportional to their deposits relative to the entire RAAC balance, including funds intended for manager allocations.
Users can steal manager-allocated RAAC tokens
Manual Review
Implement segregated balance tracking:
This creates separate accounting tracks for user rewards and manager allocations, preventing fund commingling.
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.