The burn() function is designed to allow NFT owners to permanently destroy their own tokens when they no longer want to hold them, typically for deflationary mechanics or personal preference [attached_file:91c91c79-8916-4762-a0c6-bd6b9f08697d]. In a properly implemented ERC721 burn function, only the token owner (or an approved address) should be able to call burn() to destroy their specific NFT, which would check ownership via require(ownerOf(_tokenId) == msg.sender) before calling the internal _burn() function. This ensures that users can only destroy assets they legitimately own, maintaining the security and integrity of the NFT collection.
The burn() function contains a critical missing access control that enables unauthorized asset destruction by any address [attached_file:91c91c79-8916-4762-a0c6-bd6b9f08697d]. The function directly calls _burn(_tokenId) without performing any ownership validation, meaning any user can call burn(tokenId) to permanently destroy any NFT in the collection regardless of who owns it. This creates a severe griefing vulnerability where malicious actors can systematically destroy valuable NFTs belonging to other users, causing complete and irreversible asset loss for victims. Since the function is public and has no restrictions, attackers can destroy entire NFT collections by iterating through token IDs, making this a collection-wide destruction vulnerability that violates fundamental ERC721 security principles and enables pure value destruction attacks with no recovery mechanism.
Likelihood:
The burn() function is public with no access control restrictions, making it immediately exploitable by any address that can identify existing NFT token IDs [attached_file:91c91c79-8916-4762-a0c6-bd6b9f08697d]. Token IDs are easily discoverable through blockchain explorers, event logs, or by iterating through sequential IDs starting from 0.
Executing the burn attack requires only minimal gas costs for a simple function call, making it economically feasible for malicious actors to destroy high-value NFTs at minimal expense. The low barrier to entry combined with potential high-value targets creates significant incentive for griefing attacks.
Impact:
Victims suffer 100% permanent loss of their NFT assets with no recovery mechanism available. The PoC demonstrated successful destruction of legitimate NFT ownership, with the asset becoming completely inaccessible and all standard ERC721 operations failing permanently, representing total value destruction.
The vulnerability enables systematic destruction of entire NFT collections, as attackers can iterate through all existing token IDs and burn every NFT in the contract. This creates systemic risk where the entire BidBeasts collection could be destroyed, causing complete ecosystem collapse and total loss of holder confidence in the project.
The recommended mitigation adds proper access control to the burn function by validating token ownership before allowing destruction [attached_file:91c91c79-8916-4762-a0c6-bd6b9f08697d].
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.