The _burn function performs unchecked subtraction in assembly without verifying that the account has sufficient balance or that the total supply is sufficient. The function uses 'sub' opcode which will underflow if the value being burned exceeds the account balance or total supply. This could allow an attacker to burn more tokens than they own, causing their balance to underflow to a massive number (close to MAX_UINT256), effectively creating tokens out of thin air.
Likelihood:
High
Impact:
An attacker could burn more tokens than they possess, causing their balance to underflow to MAX_UINT256 - (burnAmount - actualBalance). This effectively allows unlimited token creation without proper minting, completely breaking the token economics and allowing theft of value.
Use validation before subtracting
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.