The contract uses a whitelist to restrict minting and listing to approved addresses only. This enforces KYC or access control as part of the core protocol design.
buy() has no onlyWhitelisted modifier. Any address, including those not approved by the owner, can purchase NFTs from active listings. This bypasses the whitelist entirely for the buyer side and contradicts the protocol's access-control model.
Likelihood:
The function is publicly callable by any EOA or contract with no restriction.
No additional action is needed beyond having USDC.
Impact:
Non-whitelisted parties circumvent the protocol's access controls and acquire NFTs.
Whitelisted sellers may unknowingly transfer NFTs to untrusted parties, violating the collection's intended user base.
A stranger address that has never been whitelisted successfully purchases a listed NFT, ending up as the NFT owner despite not being in the whitelist.
Add the onlyWhitelisted modifier to buy() to enforce consistent access control across all market-facing functions.
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.