updatePrice allows price to be set below MIN_PRICE, undermining the protocol's minimum listing invariantlist() enforces a minimum price of 1 USDC (MIN_PRICE = 1e6). However, updatePrice() only checks > 0, allowing an active listing's price to be set to any value from 1 wei upward — effectively making NFTs free or near-free to buy while bypassing the intended minimum.
Risk
Likelihood:
A whitelisted seller can exploit this immediately after listing by calling updatePrice(listingId, 1) to drop the price to 1 wei
A colluding buyer and seller can use this to transfer NFTs for near-zero cost, circumventing the fee tiers entirely (fees on 1 wei = 0)
Impact:
Protocol fee revenue is bypassed entirely — _calculateFees(1) rounds to 0
The MIN_PRICE invariant assumed by the rest of the contract is violated, potentially breaking fee calculation assumptions downstream
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.