Root Cause: The mintFaucetTokens() function at lines 108-121 validates only that the contract's current balance is not above 1000 tokens but imposes no limits on the amount parameter. This allows the owner to mint unlimited tokens once the faucet balance drops below the threshold, creating a centralization risk.
While owner minting privileges are expected per specification ("owner can mint new tokens in future"), the complete absence of supply caps represents a design concern rather than a traditional security vulnerability.
Impact:
Centralization risk: Single point of trust in owner key
Unlimited supply potential: No hardcoded emission limits
Economic policy unclear: Users may expect controlled supply
Mistake amplification: Script errors could cause over-minting
Likelihood: Low - Requires owner privileges. External attackers cannot exploit. Only relevant if owner is malicious, compromised, or makes deployment mistakes.
Normal behavior: The mintFaucetTokens() function allows the owner to mint tokens to the faucet when its balance falls below 1000 tokens, with the intent to refill supply for distribution to users.
Issue: While the function checks that balance is below 1000, it places no limit on the amount parameter. The owner can mint unlimited tokens in a single call once this threshold is met. The check can also be repeatedly bypassed via burn-mint cycles: burn excess tokens, mint any amount, repeat. This creates unlimited supply potential with no on-chain caps, making token economics depend entirely on owner trustworthiness rather than coded constraints.
Likelihood:
Owner privilege required: This issue manifests when the owner (or anyone controlling the owner private key) executes the mint function with the faucet balance below 1000 tokens
Bypass scenario: The owner burns tokens to reduce balance below threshold, then mints any desired amount, creating repeated inflation cycles
Accidental activation: Deployment scripts or automated refill mechanisms could trigger large mints without proper amount validation, causing unintended hyperinflation
Key compromise: When the owner key is compromised, the attacker gains ability to mint unlimited supply with no additional constraints
Impact:
Unlimited token supply: Total supply can be increased arbitrarily with no hardcoded maximum, destroying token scarcity assumptions
Token value dilution: Existing token holders experience value dilution as supply inflates without proportional utility increase
Economic model breakdown: The faucet's distribution mechanism becomes meaningless when supply is effectively infinite
Centralization transparency: Users relying on the faucet may not be aware that token supply is uncapped and entirely dependent on owner behavior rather than coded constraints
Trust dependency: Protocol economics rely entirely on owner restraint rather than on-chain guarantees, creating single point of failure for token integrity
The following Foundry test suite demonstrates the unlimited minting capability through three scenarios:
Direct unlimited mint: Owner mints 1 billion tokens in a single transaction when faucet balance is below threshold
Burn-mint cycle bypass: Repeated inflation via burning tokens to reset threshold, then minting again
Access control verification: Confirms only owner can execute, not external attackers
All tests pass.
Test execution results:
forge test --match-path test/UnlimitedMint_ByDesign_PoC.t.sol -vvv
✓ test_OwnerCanMintArbitraryAmount_ByDesign (gas: 53451)
Initial supply: 500 tokens (after setUp burn)
After mint: 1,000,000,500 tokens
Result: 1 billion tokens minted in single transaction
✓ test_MintGuardBypassable_ViaBurnMintCycle (gas: 68832)
Cycle 1: Mint 1M tokens
Burn 500k tokens to reset threshold
Cycle 2: Mint another 1M tokens
Result: Net 1.5M token inflation via repeated bypass
✓ test_AccessControl_OnlyOwnerCanMint (gas: 13126)
External attacker reverted with OwnableUnauthorizedAccount
Result: Confirms owner-only privilege (not external exploit)
Suite result: 3 passed, 0 failed
Key findings:
Unlimited minting is possible when owner controls the key
Threshold check is bypassable via burn-mint cycles
External attackers cannot exploit (access control works)
This is a centralization risk
The tests prove that token supply depends entirely on owner behavior with no on-chain caps or safeguards.
To improve tokenomics transparency and add safeguards against owner mistakes or key compromise, implement supply policy controls:
Define maximum total supply cap
Set per-mint transaction limit
Validate amount parameter before minting
Check post-mint balance to enforce caps
These changes maintain owner's ability to refill the faucet while preventing unlimited inflation and clarifying economic expectations for users.
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.