As the documentation states:
An address is only allowed to collect 1 NFT per address, there is a check in the codebase to prevent someone from minting duplicate NFTs.
The aforementioned check can be very easily bypassed, allowing the address to mint the infinite number of NFT.
The check used to prevent the address from minting more than 1 NFT is the following:
The attacker can very easily bypass this check and mint potentially infinite number of NFTs. As the balanceOf()
method is used to determine the number of minted NFTs, the attacker can execute the following procedure:
Mint an NFT using a SantansList::collectPresent()
method
Transfer the NFT to a second address he owns
Repeat
A verified address can mint multiple NFTs instead of intented one
Manual review
Introduce the new mapping to like this to SantasList
contract:
Use this mapping in the collectPresent()
method:
Finally, update the mapping every time the user claims the present:
Relying on balanceOf > 0 in collectPresent() allows the msg.sender to send their present to another address and then collect again.
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.