Normal behavior: An ERC-721 implementation should only allow a token to be burned by its owner or an approved operator; external callers must not be able to destroy tokens they do not control.
Issue: The contract exposes a public burn(uint256) that directly calls _burn(tokenId) without checking ownership or approval. As a result, any address can call burn for any tokenId and irrevocably destroy that token.
Likelihood:
High — Calling the vulnerable burn requires only a single transaction from any externally owned account; no preconditions, approvals, or privileged access are necessary.
High — Exploitation cost is minimal (only gas), so attackers or bots can trivially enumerate tokens and burn them.
Impact:
Permanent asset loss — NFTs can be irreversibly destroyed, causing direct financial loss to owners.
Critical reputational damage — loss of collector trust and marketplace credibility; potential cascading economic effects on the collection.
A minimal PoC (Solidity-style / test pseudocode) demonstrating exploitation:
Inherit OpenZeppelin’s ERC721Burnable to enforce access control (owner or approved operator).
If custom events are required, wrap the parent burn with super.burn while preserving the original logic:
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.