The marketplace implements an anti-self-bidding protection mechanism that prevents the current highest bidder from placing subsequent bids on the same auction. This protection is enforced through a require(msg.sender != previousBidder, "Already highest bidder") check in the regular bidding logic, ensuring that once a user becomes the highest bidder, they cannot bid again until someone else outbids them.
The buy-now logic executes before the anti-self-bidding protection check and returns early, effectively bypassing the require(msg.sender != previousBidder) validation. This creates an inconsistent security model where the highest bidder is blocked from regular bidding but can circumvent this restriction by triggering the buy-now functionality. While this may be intended behavior for buy-now purchases, the implementation creates a security bypass that undermines the established anti-self-bidding protection, potentially allowing the highest bidder to manipulate the auction outcome through the buy-now mechanism when they should be restricted from further participation until outbid.
Likelihood:
This vulnerability will occur whenever the current highest bidder attempts to trigger the buy-now functionality by sending ETH equal to or exceeding the buy-now price, as the buy-now logic executes before the anti-self-bidding protection check and returns early.
Impact:
The highest bidder can circumvent the intended anti-self-bidding protection mechanism, creating an inconsistent security model where regular bidding restrictions are bypassed through the buy-now pathway, undermining the contract's security design.
Mint NFT
List NFT
Bidder 1 makes first bid becoming previous bidder
Bidder 1 triggers buy now block by placing subsequent bid over buy now price bypassing anti-self-bidding protection mechanism
Move require(msg.sender != previousBidder, "Already highest bidder"); from after the auction end check but before the buy-now logic. This ensures the highest bidder restriction applies to both regular bidding and buy-now functionality, preventing the security bypass.
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.