initiateLiquidation
function in LendingPool.sol
allows manipulation of isUnderLiquidation
mapping for arbitrary users, enabling DoS or griefing attacks.
The initiateLiquidation
function in LendingPool.sol
allows anyone to set the isUnderLiquidation
flag for any userAddress
. This function is intended to be called when a user's health factor falls below the liquidation threshold. However, the function lacks proper access control, allowing any external caller to trigger the isUnderLiquidation
flag for any user, regardless of their actual health factor or liquidation status.
Denial of Service (DoS) and Griefing. Attackers can arbitrarily set the isUnderLiquidation
flag for any user, even those with healthy collateralization ratios. This leads to:
DoS: Users can be falsely marked as under liquidation, preventing them from performing legitimate actions like borrowing or withdrawing NFTs, effectively denying them service.
Griefing: Attackers can trigger unnecessary liquidation processes, causing gas costs and disruption for targeted users, even if they are not actually undercollateralized.
User trust(Protocol Reputation): Unfair and unwarranted liquidations can damage the protocol's user trust.
manually
Immediate Mitigation: Implement proper access control for the initiateLiquidation
function. Restrict access to authorized liquidators (e.g., Stability Pool, designated liquidator contracts, or governance-approved roles) who can verify the user's health factor before initiating liquidation. Remove public access.
In LendingPool.sol
, add onlyStabilityPool
modifier to initiateLiquidation
function:
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.