The _transfer() function allows any token holder to mint unlimited tokens by transferring to themselves.
When from == to, both storage slots resolve to the same location. The balance is read twice before any write, then written twice - with the second write (addition) overwriting the first (subtraction).
Likelihood:
Any address with a non-zero balance can exploit this immediately
No special permissions or setup required
Impact:
Attacker can mint unlimited tokens, destroying the token economy
Total supply tracking becomes meaningless
All existing holders suffer complete value dilution
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.