The protocol incorrectly applies the liquidation threshold to debt instead of collateral when validating borrow requests. This inversion allows users to borrow amounts that exceed their collateral value, creating instant undercollateralized positions and systemic insolvency risk.
here we can also see that it is enforced that the liquidationthreshold is below 10000
uint256 liquidationThreshold = 8000; // 80% in basis points (8000 = 80%)
uint256 userTotalDebt = 100e18; //$100 debt
if (collateralValue < userTotalDebt.percentMul(liquidationThreshold)) {
revert NotEnoughCollateralToBorrow()
What It Does (Example Breakdown):
Flawed Calculation:
userTotalDebt.percentMul(liquidationThreshold) = 100e18 * 8000 / 10000 = 80e18 ($80)
if (80e18 < 80e18) → false → borrow allowed
User borrows
incorrect validation causes borrowers to borrow at a very low collateral amount leading to loss of funds for the protocol
apply the liquidation threshold correctly
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.