The NFTLiquidator
contract relies on the StabilityPool
for executing NFT liquidations and handling auction proceeds. However, the setStabilityPool
function lacks proper validation, allowing the owner to set it to address(0)
or an invalid address. If incorrectly configured, this could lead to failed liquidations and potential loss of funds.
The setStabilityPool
function allows arbitrary assignment of the StabilityPool
address without verification. If set to address(0)
or an incorrect address, the liquidation mechanism will break, as only the StabilityPool
is authorized to call liquidateNFT()
. Auction proceeds are directed to the StabilityPool
, meaning an incorrect address could lead to fund misdirection or total loss.
Liquidation Failure: If the StabilityPool
address is misconfigured, NFTs cannot be liquidated, leading to protocol insolvency risks.
Loss of Auction Proceeds: Auction proceeds sent to an incorrect or compromised address would be irrecoverable.
Exploitation of StabilityPool: If the StabilityPool
contract is compromised or upgraded incorrectly, an attacker could:
Force liquidate any NFT via liquidateNFT()
.
Steal auction proceeds since they are sent to the StabilityPool
address.
Manipulate the auction process to create an unfair advantage or extract funds from the protocol.
The contract owner mistakenly sets the StabilityPool
to address(0)
.
No liquidations can occur since the liquidateNFT()
function is restricted to StabilityPool
.
Borrowers holding undercollateralized positions are not liquidated, resulting in protocol losses.
Alternatively, an attacker sets the StabilityPool
address to a malicious contract, intercepting all auction proceeds.
Input Validation: Ensure setStabilityPool
only accepts valid contract addresses using
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.