Normal behavior: Token contracts should restrict minting (if allowed) with caps, role-based access, timelocks, or single-use initial mints so token supply and inflation are predictable.
Specific issue: mint() is public and onlyOwner, and it always mints 10_000_000 * 1e18 to the owner on every call. The owner can call mint() repeatedly to inflate supply arbitrarily. This is a centralization/trust vulnerability: the owner can wreck token economics, drain value, or rug investors at any time.
Likelihood:
The issue occurs whenever the contract owner executes the mint() function after deployment, since the function can be called repeatedly without restriction.
It also occurs whenever the ownership is transferred to another address that subsequently calls mint(), as the new owner inherits the same unlimited minting privilege.
Impact:
The total token supply can become unbounded, causing severe inflation and devaluation of user-held tokens.
Unlimited minting enables the owner (or a compromised owner wallet) to manipulate the vault’s token-based economy, breaking trust and potentially draining all value from token holders.
Run this script after compiling; it demonstrates calling mint() twice increases owner balance twice.
Expected result: owner balance increases by 10_000_000 * 1e18 each call.
Brief explanation: Replace the unconditional public mint with a guarded mint design: (a) add a CAP on total supply, or (b) change mint() to accept an amount and enforce totalSupply + amount <= CAP, and/or (c) make minting one-time (initial mint only) or controlled via a multisig/timelock. Also consider removing mint entirely if not required.
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.