# Liquidation seizure without health improvement

Liquidator picks which collateral to seize; check post-liquidation health factor actually improves

_Area: DeFi oracles, liquidations and flash loans. Seen in 2 disclosed reports; latest 2024-05-03. Updated 2026-10-25._

## How it works
Liquidation should make an unhealthy position healthier: repay debt, remove collateral, raise the health factor. That holds only if the collateral removed is worth at least as much risk-adjusted value as the debt repaid. When the liquidator chooses which collateral to seize, or when the seize amount is clamped without adjusting the debt removed, the invariant breaks. Seizing the highest-collateralFactor or highest-LTV asset lowers the position's weighted collateral (or average risk-adjust factor) faster than debt falls, so the health factor can drop or stay below the threshold, and the position remains liquidatable [E1](https://bugbountylibrary.com/r/c4%3A2024-02-wise-lending%3AM-09.md)[E2](https://bugbountylibrary.com/r/sherlock%3A2024-04-interest-rate-model%3AM-14.md).

## Where it shows up
- Partial liquidation where the caller passes a seize market or token list, and no post-liquidation health-factor check exists [E1](https://bugbountylibrary.com/r/c4%3A2024-02-wise-lending%3AM-09.md)[E2](https://bugbountylibrary.com/r/sherlock%3A2024-04-interest-rate-model%3AM-14.md)
- Health factor computed from an average risk-adjust factor across all collateral, while seize is per-market [E2](https://bugbountylibrary.com/r/sherlock%3A2024-04-interest-rate-model%3AM-14.md)
- A liquidation cap expressed as a fraction of debt (e.g. 50%) that the liquidator can re-trigger by ordering seizures [E1](https://bugbountylibrary.com/r/c4%3A2024-02-wise-lending%3AM-09.md)
- Computed seize amount clamped to the user's balance without clamping the paired debt reduction [E3](https://bugbountylibrary.com/r/c4%3A2023-07-tapioca%3AH-03.md)

## How to review
For every allowed (repay market, seize market) pair, compute the health factor before and after a partial liquidation and require it to strictly improve (or reach a safe target). Sketch: HF = weightedCollateral / debt, where weightedCollateral = sum(collateral_i * price_i * collateralFactor_i). Require HF_after > HF_before for each pair. Check that the debt removed is bounded by the risk-adjusted value of collateral actually seized, and that any clamp on seize amount symmetrically clamps debt reduction or reverts. Verify the liquidation cap cannot be chained by re-selecting collateral.

## Variants seen
- Liquidator picks highest-collateralFactor token, chaining the 50% cap to 81% of the position [E1](https://bugbountylibrary.com/r/c4%3A2024-02-wise-lending%3AM-09.md)
- Liquidator seizes highest-LTV collateral, lowering average risk factor and health factor [E2](https://bugbountylibrary.com/r/sherlock%3A2024-04-interest-rate-model%3AM-14.md)
- Seize amount clamped to user collateral while debt removed stays inflated, leaking protocol funds [E3](https://bugbountylibrary.com/r/c4%3A2023-07-tapioca%3AH-03.md)

## Impact and severity
Positions can be liquidated beyond intended limits, and liquidators are mispriced. Severity rises with multi-collateral markets and caps that can be re-triggered; silent clamps turn accounting errors into direct protocol fund loss [E3](https://bugbountylibrary.com/r/c4%3A2023-07-tapioca%3AH-03.md).

## Why fixes fail
Clamping only the seize amount, without clamping the paired debt reduction, leaves the asymmetric-clamp leak open [E3](https://bugbountylibrary.com/r/c4%3A2023-07-tapioca%3AH-03.md).

## Evidence
- E1: https://bugbountylibrary.com/r/c4%3A2024-02-wise-lending%3AM-09.md
- E2: https://bugbountylibrary.com/r/sherlock%3A2024-04-interest-rate-model%3AM-14.md
- E3: https://bugbountylibrary.com/r/c4%3A2023-07-tapioca%3AH-03.md
