The burn() function in the BidBeasts NFT contract lacks fundamental ownership verification, allowing any arbitrary address to permanently destroy any NFT in existence.
Likelihood: HIGH
The vulnerability stems from the complete absence of authorization checks in the burn() function.
Impact:
Any NFT can be permanently destroyed by any address
Contract-owned NFT permanently destroyed by unauthorized actor
Bidders lose ETH when auctioned NFTs are burned
This bug is exploited to burn contract-owned tokenIds that are actively listed on the marketplace.
The test fails because vm.expectRevert() doesn't trigger - meaning the burn succeeds. This confirms that any address can destroy any NFT, regardless of ownership or marketplace status.
A user mints and lists an NFT for auction
A bidder places a legitimate bid of 1.1 ETH
The NFT is now owned by the marketplace contract with active bidding
An unauthorized third party attempts to burn the NFT
This implementation ensures only authorized parties can burn NFTs, preventing the attack demonstrated in the PoC while maintaining proper token management capabilities.
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.