The StabilityPool contract currently lacks the necessary functionality to convert rTokens to crvUSD and handle crvUSD deposits. This oversight renders the protocol's liquidation mechanism non-functional, as liquidations require crvUSD transfers that the system cannot facilitate.
The vulnerability arises because of the following reasons:
1.The StabilityPool only accepts rToken deposits, with no provision for crvUSD:
2.The stability contract doesn't implement any functions to convert RTokens to crvUSD.
3.Liquidations require crvUSD transfers, but the system has no way to obtain or handle crvUSD:
This vulnerability has severe consequences for protocol functionality:
All liquidation attempts will revert
Protocol's liquidation mechanism is non-functional
StabilityPool cannot fulfill its core purpose.
Manual review
Since the issue arises because the StabilityPool does not have any crvUSD to supply for the liquidations, the following solutions could help solve it:
Add crvUSD deposit functionality to StabilityPool:
Implement rToken to crvUSD conversion in RToken:
PLEASE NOTE: Proper access controls need to be implemented through require
statements or modifiers for new functions.
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.