An attacker can use a flash loan to temporarily deposit a large amount of RToken into the StabilityPool right before rewards are distributed. This allows them to take an unfairly high percentage of RAAC rewards. After claiming the rewards, the attacker withdraws their RToken and returns the borrowed flash-loaned funds. This process can be repeated in every reward cycle, draining the pool.
In StabilityPool.sol
:
Monitor RAAC rewards – The attacker watches when new RAAC tokens are added to StabilityPool (via RAACMinter.tick()
function).
Flash Loan RToken – The attacker takes a flash loan of crvUSD, deposits it into LendingPool, and mints a large amount of RToken.
Deposit RToken into StabilityPool – The attacker deposits the RToken, making it appear as if they are a major contributor.
Claim Disproportionate Rewards – Since the rewards are distributed based on the amount of RToken, the attacker gets a large share of the RAAC rewards.
Withdraw RToken & Repay Flash Loan – The attacker withdraws the RToken, converts it back to crvUSD, and repays the flash loan—all in a single transaction.
Repeat – The attacker can repeat this exploit every time RAAC rewards are distributed.
High – The attacker can continuously drain the reward pool, reducing rewards for honest users.
Manual Review
Use a time-based reward calculation to prevent flash loan exploits.
Require a minimum deposit duration before rewards are claimable.
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.