Core Contracts

Regnum Aurum Acquisition Corp
HardhatReal World AssetsNFT
77,280 USDC
View results
Submission Details
Severity: medium
Valid

Auction in NFTLiquidator cannot be ended

Summary

Auction in NFTLiquidator cannot be ended because stabilityPool cannot receive Ether.

Vulnerability Details

In NFTLiquidator, we will receive the liquidated NFTs and try to sell them via the auction method. When we end this auction, we will transfer the highest bid to the stability as the NFT's selling price. We should notice that the sell price is in term of native Ether.

The problem here is that the contract stabilityPool cannot support to receive ether because we miss the receive()/fallback() interface.

Although the NFTLiquidator is not in the scope of our audit, the actual vulnerability happens in the stabilityPool, the stabilityPool misses the related receive()/fallback() interface. So this issue should be in our audit scope.

function endAuction(uint256 tokenId) external {
TokenData storage data = tokenData[tokenId];
if (block.timestamp < data.auctionEndTime) revert AuctionNotEnded();
address winner = data.highestBidder;
uint256 winningBid = data.highestBid;
delete tokenData[tokenId];
nftContract.transferFrom(address(this), winner, tokenId);
payable(stabilityPool).transfer(winningBid);
emit AuctionEnded(tokenId, winner, winningBid);
}

Impact

The NFT cannot be sold because the stabilityPool cannot receive ether.

Tools Used

Manual

Recommendations

Add one interface receive()/fallback() to receive the native Ether.

Updates

Lead Judging Commences

inallhonesty Lead Judge 3 months ago
Submission Judgement Published
Validated
Assigned finding tags:

StabilityPool misses receive/fallback breaking the integration with NFTLiquidator

inallhonesty Lead Judge 3 months ago
Submission Judgement Published
Validated
Assigned finding tags:

StabilityPool misses receive/fallback breaking the integration with NFTLiquidator

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.