The repayment process contains a critical mismatch between the DebtToken::burn() function return values and their handling in the LendingPool::finalizeLiquidation().
The return tuple order is inverted between scaled/unscaled amounts, leading to:
Incorrect Asset Transfers
Scaled amount (protocol's internal accounting units) used instead of actual asset amount
Wrong Debt Balance Updates
Scaled values treated as raw amounts, permanently corrupting user positions
Protocol Insolvency Risk
Mismatch between actual assets and accounting records
Permanent loss of repaid funds
Users unable to reduce actual debt
Protocol accounting becomes unreliable
Liquidation mechanisms break completely
Protocol insolvency within hours of exploitation
Fix Return Value Handling
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.