The initiateLiquidation function in LendingPool.sol allows initiating liquidation for undercollateralized users but does not enforce actual debt repayment. If neither the borrower nor the Stability Pool covers the outstanding debt, the protocol can accumulate bad debt, leading to insolvency.
The function initiateLiquidation only updates the state by marking a user as under liquidation and recording the timestamp. However, it does not enforce any debt repayment mechanism. The liquidation process relies solely on:
The borrower voluntarily repaying their debt within a grace period.
The Stability Pool having sufficient funds to cover the debt in exchange for the NFT.
If neither of these conditions is met, the protocol accrues bad debt, creating an insolvency risk. The issue arises due to the lack of an automatic enforcement mechanism for liquidation settlement, meaning an undercollateralized position could persist indefinitely.
This function fails to ensure that a liquidation event leads to the actual repayment of debt, leaving the protocol vulnerable to insolvency.
If neither the borrower nor the Stability Pool covers the outstanding debt:
The protocol accumulates bad debt, leading to insolvency over time.
Liquidators are not incentivized to step in since there is no enforced mechanism to settle the debt.
Manual code review
To prevent insolvency, the liquidation process should enforce actual debt settlement by:
Implementing a forced liquidation mechanism where external liquidators can repay the debt and claim collateral.
Introducing penalties or additional incentives for liquidators to ensure bad debt does not accumulate.
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.