The calculation of a user's share of rewards from the pool relies solely on userDeposits[user], which can be manipulated through a flashloan attack, leading to unfair or inflated reward distributions.
When users want to withdraw their funds from the contract they get also rewards with it. As we can see the function calls calculateRaacRewards to calculate the accrued amount.
But, the issue arise when calculateRaacRewards function try to rely only userDeposits[user] which is something can easily manipulated using flashloan.
The missing of time factor make this attack possible in single Tx.
Stealing other users profit from depositing in the pool.
Manual audit
The most preferable way to prevent flashloan attack is by using time factor in withdraw function.
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.