The LendingPool contract's pause mechanism can unfairly prevent users from repaying debt or closing liquidation during grace periods, leading to forced liquidations even when users have the means and intention to resolve their positions.
The repay(), repayOnBehalf and closeLiquidation() functions both use the whenNotPaused
modifier:
Attack scenario:
User's position becomes eligible for liquidation
Liquidation is initiated, starting 3-day grace period
Contract gets paused during grace period
Grace period expires while contract is paused
Contract gets unpaused
User can no longer repay or close liquidation due to expired grace period
User's collateral gets liquidated despite having funds to repay
Users lose their collateral unfairly due to protocol pause
Manual review
Remove the whenNotPaused
modifier from repay()
, repayOnBehalf()
and closeLiquidation()
functions to ensure users can always resolve their positions.
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.