The setParameter() in BoostController.sol allows the contract owner to set the healthFactorLiquidationThreshold to 0, effectively disabling the liquidation process. While the likelihood of this happening is small, as the owner is assumed to be a trusted role, it still poses a significant risk to the protocol’s solvency.
The setParameter function allows the contract owner to modify various protocol parameters, including healthFactorLiquidationThreshold. There is no validation to ensure that healthFactorLiquidationThreshold is at least equal to BASE_HEALTH_FACTOR_LIQUIDATION_THRESHOLD. If set to 0, the liquidation condition in initiateLiquidation will never be met, preventing any liquidation from occurring.
If healthFactorLiquidationThreshold == 0, then healthFactor >= 0 is always true, preventing all liquidations.
If liquidations are disabled:
Bad debt accumulation: Borrowers can take out loans and never face liquidation, leading to potential protocol insolvency.
Protocol collapse: If too many bad loans accumulate, the protocol may become undercollateralized.
Contract owner calls:
A borrower takes a loan and allows their collateral to drop below safety levels.
Any attempt to liquidate the borrower will fail due to:
Since healthFactorLiquidationThreshold is 0, liquidation is impossible.
Manual review
A validation check should be added to setParameter to prevent healthFactorLiquidationThreshold from being set below BASE_HEALTH_FACTOR_LIQUIDATION_THRESHOLD:
This ensures that liquidations remain functional and protects the protocol from insolvency.
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.