The StabilityPool contract is designed to manage a stability pool where users can deposit tokens and participate in liquidations. During the liquidation process, the finalizeLiquidation function in the LendingPool contract transfers NFTs from the liquidated user to the StabilityPool. However, the StabilityPool contract lacks functionality to manage or withdraw these NFTs, leading to potential loss of assets as the NFTs become permanently locked in the contract.
The liquidateBorrower function in the StabilityPool contract calls finalizeLiquidation in the LendingPool contract:
The finalizeLiquidation function in the LendingPool contract transfers the NFTs from the liquidated user to the StabilityPool using the following code:
However, the StabilityPool contract does not implement any methods to manage or withdraw these NFTs. As a result, the NFTs are permanently locked in the StabilityPool contract, and there is no way to retrieve or transfer them to another address.
NFTs transferred to the StabilityPool cannot be retrieved, leading to permanent loss of valuable assets. The impact is High, the likelihood is High, so the severity is High.
Manual Review
To address this issue, the StabilityPool contract should be updated to include functionality for managing and withdrawing NFTs.
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.