The fulfillMintRequest
function uses _mint
instead of _safeMint
.
When minting NFTs to an address, the _safeMint
function is used to ensure that the recipient is capable of handling ERC721 tokens. This includes checking that a smart contract recipient implements the onERC721Received
interface, preventing tokens from being permanently locked.
By using_mint
function instead of _safeMint
. This bypasses the onERC721Received
check, which can lead to tokens being locked in the contract that do not support receiving ERC721 tokens.
Likelihood:
Developers often use contract wallets, multisigs, or custom vaults to receive NFTs, which may not support the ERC721 receiver interface.
The function is publicly accessible or accessible via a permissioned interface, making it easy to call with any target address.
Impact:
Tokens can be permanently locked in a smart contract that cannot handle them
This can result in asset loss, affecting users and potentially the reputation of the project
Use _safeMint instead of _mint to prevent tokens from being permanently locked.
The `fulfillMintRequest` function is external and anyone can call it. If the protocol uses `_safeMint` instead of `_mint`, this introduces a reentrancy risk. It is better to use `_mint` and the caller is responsible for being able to obtain the token.
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.