Normal Behavior: A bid equal to the minimum price should be accepted as the starting bid, as it meets the price requirement.
Specific Issue: The validation for the first bid uses a strictly greater than comparison (> minPrice). If a bidder sends an amount exactly equal to listing.minPrice, the transaction reverts. Crucially, the sent ETH is locked permanently in the contract because the refund logic is only executed for a previous bidder, which does not exist for the first bid.
Likelihood:
The bug is easy to trigger; any user attempting to bid exactly the minimum price will cause it.
The design of the function ensures the funds remain locked upon this specific reversion.
Impact:
Permanent loss of funds equal to the minimum price.
Allows a griefing attack to continuously lock small amounts of ETH in the contract.
This PoC demonstrates a user sending a value (1 ether) that is exactly equal to MIN_PRICE, causing the transaction to revert while the 1 ether remains locked in the contract's balance.
The comparison for the first bid check must be changed from strictly greater than (>) to greater than or equal to (>=). This simple change allows a bid equal to the minimum price to be valid, thus preventing the reversion that locks the funds.
First bid validation uses > instead of >=, preventing valid starting bids.
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.