The burn(uint256) function is public and calls _burn(...) without checking that the caller is the token owner or an approved operator. This allows any account to burn (permanently destroy) any token. There should be a require statement or an modifer that only allows the owner of that particular tokenId to call this burn function and no one else should be able to call and actually put the token owner is loss.
Likelihood:
High — trivial to exploit on-chain if present.
This will occur everytime.
Impact:
Critical — loss/destruction of user NFTs, permanent asset loss.
DoS if the attacker always calls this function before the token owner could list this token for bid
Adding the condition that only the owner and the token owner can call this function and no one else.
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.