Normal Behavior: When a buyer initiates a transaction to purchase an NFT, they expect to pay the price that was displayed to them at the time of the call.
Specific Issue: The buy function does not include a maximum price parameter or a slippage check. Since the updatePrice function allows a seller to change the price of an active listing at any time, a malicious seller can observe a pending buy transaction in the mempool and front-run it by calling updatePrice to significantly increase the cost.
Likelihood: High
Reason 1: Transaction front-running is a common attack vector on public blockchains.
Reason 2: Sellers have a direct financial incentive to increase the price when they see a guaranteed buyer.
Impact: Medium
Impact 1: Financial Loss. Buyers may end up paying significantly more USDC than they intended.
Impact 2: Trust Erosion. Users may be hesitant to use a marketplace where prices can be manipulated during the "checkout" process.
Add a maxPrice parameter to the buy function and verify that the current listing price does not exceed it.
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.
The contest is complete and the rewards are being distributed.