DeFiFoundry
60,000 USDC
View results
Submission Details
Severity: high
Valid

Missing Liquidation Fee in `TradingAccount::isLiquidatable` Check Formula

Summary

The isLiquidatable function currently checks if an account is liquidatable by comparing the required maintenance margin against the margin balance. However, it does not account for the liquidation fee, which should be included in the calculation to ensure accurate assessment.

From the docs the formula is

formula : isLiquitable = requiredMaintenanceMargin + liquidationFeeUSD > marginBalanceUSD

Vulnerability Details

Impact

Omitting the liquidation fee may lead to incorrect determination of liquidatable accounts, potentially causing accounts to remain open when they should be liquidated, or vice versa.

Tools Used

Manual review

Recommendations

Add liquidationUsdto isLiquitable()

function isLiquidatable(
UD60x18 requiredMaintenanceMarginUsdX18,
SD59x18 marginBalanceUsdX18,
UD60x18 liquidationFeeUsdX18
)
internal
pure
returns (bool)
{
GlobalConfiguration.Data storage globalConfiguration = GlobalConfiguration.load();
return requiredMaintenanceMarginUsdX18.add(globalConfiguration.liquidationFeeUsdX18 = liquidationFeeUsdX18;liquidationFeeUsdX18).intoSD59x18().gt(marginBalanceUsdX18);
}
Updates

Lead Judging Commences

inallhonesty Lead Judge about 1 year ago
Submission Judgement Published
Validated
Assigned finding tags:

Liquidation doesn't take the liquidation fee in consideration inside the isLiquidatable check

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.