Bid Beasts

First Flight #49
Beginner FriendlyFoundrySolidityNFT
100 EXP
View results
Submission Details
Impact: low
Likelihood: low
Invalid

AuctionExtended Event May Not Be Emitted

Root + Impact

Description

In placeBid(), if listing.auctionEnd <= block.timestamp, timeLeft = 0. This may cause unexpected behavior where the auction is extended without correctly emitting the AuctionExtended event.

if (listing.auctionEnd > block.timestamp) {
timeLeft = listing.auctionEnd - block.timestamp;
}
if (timeLeft < S_AUCTION_EXTENSION_DURATION) {
listing.auctionEnd = listing.auctionEnd + S_AUCTION_EXTENSION_DURATION;
emit AuctionExtended(tokenId, listing.auctionEnd);
}

Risk

Likelihood:

  • edge case

Impact:

  • informational/logging issue

Proof of Concept

function test_auction_extended() public {
vm.prank(OWNER);
nft.mint(SELLER);
// Seller lists valuable NFT
vm.startPrank(SELLER);
nft.approve(address(market), TOKEN_ID);
market.listNFT(TOKEN_ID, MIN_PRICE, 0);
vm.stopPrank();
vm.warp(block.timestamp + 15 minutes);
// Griefer places minimum bid (minPrice + 1 wei)
vm.prank(BIDDER_1);
market.placeBid{value: 2 ether}(TOKEN_ID);
}

Recommended Mitigation

Add a condition to avoid extending auctions after expiry, or clarify logic with comments.

Updates

Lead Judging Commences

cryptoghost Lead Judge about 1 month ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Support

FAQs

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