The internal _burnfunction is incorrectly implemented. It doesn't check that the account that will burn tokens has a balance greater than or equal to the amount of tokens to burn. Because it uses assembly blocks and the subinstruction, an underflow will occur when users burn more tokens than they own. Consequence is that their token balance will be extremely high, potentially type(uint256).max.
Likelihood:
Likelihood is high given that if a token uses this ERC20 implementation and allows the burn feature, anyone will be able to mint free tokens and dump these tokens on DEXs/CEXs.
Impact:
Mint of a huge amount of tokens for free
Please copy paste the following test in Token.t.sol file:
Ensure that the _burnfunction checks the balance of the account that will burn token and reverts if there is an attempt to burn more tokens thant the account owns.
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.
The contest is complete and the rewards are being distributed.