The normal behavior of a burn function in an NFT contract should be to allow only the token owner or approved addresses to destroy their own tokens.
The specific issue in the BidBeasts contract is that the burn function has no access control, allowing any address to burn any token regardless of ownership.
Likelihood: High
Any user who knows a token ID can call this function to burn that token.
No special permissions, conditions, or technical knowledge is required beyond basic contract interaction.
Impact: Critical
Permanent and irreversible loss of NFT assets for token holders.
Complete undermining of ownership rights in the NFT ecosystem.
Potential market manipulation by maliciously burning valuable or listed NFTs.
Loss of trust in the platform as users realize their assets can be destroyed by anyone.
The vulnerability allows any address to burn any token without permission. This is particularly dangerous because:
No Authorization Required: The function lacks any check to verify if the caller is the token owner or an approved address.
Simple Attack Vector: A malicious actor only needs to know the token ID to destroy it permanently.
Irreversible Damage: Once burned, NFTs cannot be recovered as the metadata and ownership record is permanently deleted from the blockchain.
Market Implications: This could be exploited to manipulate markets - for example, burning rare tokens to increase the value of similar tokens, or burning tokens listed on the marketplace to disrupt auctions.
The mitigation adds proper access control to the burn function by:
Ownership Verification:
Checks if the caller is the actual token owner (ownerOf(_tokenId) == msg.sender)
Checks if the caller is an approved operator for the owner (isApprovedForAll(ownerOf(_tokenId), msg.sender))
Checks if the caller is specifically approved for this token (getApproved(_tokenId) == msg.sender)
Security Benefits:
Aligns with ERC721 standards for token operations
Prevents unauthorized destruction of NFT assets
Preserves ownership rights and the integrity of the NFT ecosystem
Maintains compatibility with the marketplace contract
This fix ensures that only legitimate token owners or their approved delegates can burn tokens, protecting users' digital assets from malicious actors.
In the BidBeasts ERC721 implementation, the burn function is publicly accessible, allowing any external user to burn NFTs they do not own. This exposes all tokens to unauthorized destruction and results in permanent asset loss.
In the BidBeasts ERC721 implementation, the burn function is publicly accessible, allowing any external user to burn NFTs they do not own. This exposes all tokens to unauthorized destruction and results in permanent asset loss.
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.