The getBorrowRate function incorrectly calculates the value of total Debt. The normalized debt index is used directly instead of the actual total debt amount, leading to severely underestimated utilization rates and incorrect interest rate calculations.
In the ReserveLibrary, getBorrowRate function incorrectly use the normalized debt index as the total debt amount:
However, the getNormalizedDebt() function returns an index in RAY units (1e27) that tracks interest accrual.
This index should be multiplied with the total usage to get the actual total debt.
The incorrect calculation of totalDebt causes borrowing rates to be significantly underpriced, with rates remaining near the base rate even when utilization is high. When actual utilization could be 50%, the protocol calculates it at 0.1%, leading borrowers to pay much lower interest than they should. This creates an unsustainable lending environment where borrowing is too cheap relative to risk, potentially depleting protocol liquidity and destabilizing the system's economic model.
Manual Review
Recommendations:
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.