The protocol expect minters to put up lockAmount USDC as collateral for each NFT minting.
Now when a minter go through the following flow:
1. mintNft() <- this call requires the minter to put up a collateral.
2. list()
3. cancelListing() <- this call returns the collateral to the minter
The minter can basically mint NFT for free using this flow.
Likelihood:
When a minter go through the 1) mintNFT, 2) list, 3) cancelListing flow, it can mint NFT for free.
Impact:
Going through the 1) mintNFT, 2) list, 3) cancelListing flow multiple times, an attacker can use just lockAmount USDC to mint up to MAX_SUPPLY of NFTs.
Remove the collateral return logic on cancelList().
The collateral can be returned to the minter when the NFT is sold, logics added inside the buy()function.
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.