Whenever a borrower is liquidated, the Stability Pool covers the debt to keep the Lending Pool operational.
A problem arises because the token held in the Lending Pool is crvUSD, while the Stability Pool holds rToken.
rToken is minted whenever users deposit into the Lending Pool, meaning crvUSD and rToken are completely different entities.
To finalize a liquidation, the manager or owner of the Stability Pool must call liquidateBorrower.
As shown the function will revert every time due to insufficient balance.
Permanent DoS of liquidateBorrower.
Manual review
Fix is not trivial, but an idea is to utilize the RToken::transferAsset() 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.