Impact
Denial-of-finish for auctions; wasted gas and refunds churn; potential stuck credits if refunds fail. (Severity: Medium–High)
Likelihood
Medium — trivial to trigger by a funded attacker or colluding accounts repeatedly bidding at last second.
Scope (affected files)
src/BidBeastsNFTMarket.sol (function: placeBid())
Normal behaviour :
When a valid bid arrives within the extension window, the auction should be extended so late bids get a fair chance.
Issue:
The contract adds the extension onto the existing auctionEnd, allowing repeated last-second bids to increase auctionEnd unboundedly and prevent the auction from ever ending.
Root cause :
Solidity (excerpt from placeBid()):
Why this matters :
Auction can be kept alive indefinitely (bad UX + DoS).
Repeated refunds and gas burn; economic griefing.
If refund push fails, attacker can bloat failedTransferCredits and cause stuck balances.
Reason 1: Any bidder who times bids near expiry can trigger extensions; attacker only needs funds and two or more addresses (or many wallets) to alternate and avoid Already highest bidder checks.
Reason 2: Refunds are performed on-chain via .call; if any refund fails, funds are credited and the attacker can exploit refund behavior to amplify disruption.
Impact:
Honest bidders and seller cannot finalize the auction → marketplace downtime for that listing.
Repeated on-chain operations cost gas for victims and network; potential reputational loss.
BidBeast marketplace contains a flaw in its auction timing mechanism. This causes the contract to miscalculate the actual end time of an auction, resulting in auctions that either conclude prematurely or run longer than specified.
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.