Normally, only the owner of an NFT should be able to destroy (burn) their own token, preserving user property rights and preventing malicious griefing.
In the current implementation, any address can call burn(uint256 _tokenId) and destroy any NFT, regardless of ownership. This allows arbitrary users to irreversibly destroy NFTs they do not own.
Likelihood:
This will occur whenever any user calls burn() with the tokenId of an NFT they do not own.
There are no access controls or ownership checks in place, so this is trivial to exploit.
Impact:
Any NFT can be destroyed by anyone, resulting in permanent loss of user assets.
This can be used for griefing, denial of service, or targeted attacks on users or the protocol (e.g., burning NFTs held in escrow by the marketplace).
This issue consists of two cases.
Case 1: Griefing individual users by burning their NFTs
Add the following test to BidBeastsMarketPlaceTest.t.sol:
Case 2: Disrupting protocol invariants by burning NFTs held in escrow, potentially breaking auctions and marketplace logic.
Consider adding a check or a modifier to see if the person trying to burn the NFT is the actual owner of the asset.
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.