The system should only allow new share issuance (minting) proportional to actual capital contribution or authorized actions from the company owner. Each shareholder’s percentage of ownership should remain consistent unless new equity is legitimately added.
The issueShares() function does not verify whether the caller is authorized or whether the total share supply cap has been reached. This allows any external user to mint new shares to themselves, artificially inflating their ownership and enabling theft of future dividends and voting power.
Likelihood:
The vulnerability triggers whenever the function is publicly callable and no owner or governance check exists.
It occurs during any normal operational phase since share issuance can be called at any time by any address.
Impact:
An attacker can mint arbitrary shares and claim nearly all dividends during distributeDividends().
This effectively drains all ETH or token profits from the system and permanently corrupts shareholding fairness.
When attack() is executed, the attacker becomes the dominant shareholder by minting unlimited shares and subsequently drains all distributed dividends.
• Implement strict access control (e.g., onlyOwner or governance modifier) on share issuance and burning functions.
Add a maximum total supply cap to prevent dilution beyond the intended number of shares.
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.