The NFTLiquidator contract lacks a mechanism to retrieve NFTs when no bids are placed in an auction. If an auction ends without a bidder, the NFT remains stuck in the contract indefinitely since neither buyBackNFT nor endAuction can successfully execute.
The vulnerability arises because:
The buyBackNFT function reverts if the auction has ended (AuctionHasEnded).
The endAuction function reverts if there is no bidder (NoBidsPlaced).
This results in a scenario where an NFT remains permanently locked within the contract if no bids are placed during the auction period.
Since both functions revert under different conditions, no function allows retrieval of the NFT if no bids were placed.
The NFT remains permanently locked in the NFTLiquidator contract.
Owners lose access to their NFTs if no bids are placed.
Manual Code Review
Introduce a fallback mechanism to allow NFT recovery if no bids are placed.
Modify endAuction to allow the contract owner or a predefined address to reclaim the NFT if no bids exist.
Introduce a new function, e.g., recoverUnsoldNFT, that enables the return of NFTs to the stability pool if the auction ends without a bid.
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.