In the reward calculation in the StabilityPool.sol there is no concept of rewardDebt. This allows attackers to deposit+withdraw continously to keep on earning infinite rewards.
The rewards (RAACTokens) in the stabilityPool is calculated as the ratio of users DeToken balance and the totalSupply multiplied with the raacToken.balanceOf(address(this). Thus if a user deposits and withdraws, he will get rewards, and no updation of his rewardDebt is done(such a variable is non-existant). So the same user can deposit his withdrawn RToken again and again withdraw to again get the same rewards. This can be done infinite number of times to drain the StabilityPool.
Each time the user deposits RToken, his deToken balance increases, so does the totalSupply, his rewards claimed each time is the same. Since there is no time factor/ rewardDebt included, only the deToken balance matters for rewards and this can be easily gamed by the process mentioned above.
Draining of RAAC Tokens in the stability Pool and thus other users wont receive their rewards.
manual review
Consider implementing some other system for reward distribution.
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.