The StabilityPool contract lacks the necessary implementation to receive and handle NFTs during liquidation, despite being the designated recipient of NFTs in the LendingPool's liquidation process. This mismatch can cause liquidations to fail and potentially lock NFTs in the LendingPool.
[StabilityPool.sol])
The LendingPool attempts to transfer NFTs to the StabilityPool during liquidation:
However, the StabilityPool contract:
Does not implement ERC721Holder
Has no functionality to handle or manage received NFTs
Lacks methods to distribute or auction liquidated NFTs
A user's position in LendingPool becomes liquidatable
The StabilityPool try liquidation through finalizeLiquidation
LendingPool attempts to transfer NFTs to StabilityPool
The transfer fails because StabilityPool cannot receive ERC721 tokens
The entire liquidation transaction reverts
The liquidation cannot be completed, potentially leaving bad debt in the system
Liquidations involving NFTs will fail
System cannot handle underwater positions properly
NFTs could potentially become locked in the LendingPool
Stability mechanism of the protocol is compromised
Manual code review
Implement ERC721 receiver functionality in StabilityPool:
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.