The liquidateBorrower function checks the crvUSD balance of the StabilityPool, but since the pool holds RTokens instead of crvUSD directly, this will cause all liquidation attempts to revert.
https://github.com/Cyfrin/2025-02-raac/blob/89ccb062e2b175374d40d824263a4c0b601bcb7f/contracts/core/pools/StabilityPool/StabilityPool.sol#L457
The issue is that:
StabilityPool receives RTokens when users deposit, not crvUSD
The actual crvUSD is held in the RToken contract
Checking crvUSD balance of StabilityPool will always return 0
High. The incorrect balance check:
Will always revert due to checking wrong token balance
Makes liquidations impossible as the check will never pass
Check the RToken balance instead of crvUSD:
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.