Normal behavior: When the CustomerEngine initiates a sale, the CompanyGame contract should receive ETH equal to the sale price and record that actual ETH as revenue so company_balance always reflects real on-chain funds.
Problem: The CompanyGame sell_to_customer function computes revenue from the requested item count and adds that computed value to self.company_balance without validating or using msg.value. This allows company_balance to be increased on-chain accounting without any ETH being forwarded, producing fake revenue.
Likelihood:
A deployment where ITEM_PRICE in CustomerEngine and SALE_PRICE in CompanyGame differ because of configuration or version mismatch.
The owner sets CUSTOMER_ENGINE to an address that does not forward ETH correctly (an EOA, a misconfigured contract, or a contract with a bug in forwarding/refund logic).
Impact:
Company accounting (company_balance) can be inflated without corresponding ETH on-chain, enabling payouts and share-price calculations to be based on fictitious funds.
Withdrawals and investor redemptions may later attempt to transfer ETH the contract does not hold, causing reverts, insolvency or real fund loss if cover-up injections are made opportunistically.
Credit CompanyGame only with actual ETH received and validate the forwarded payment matches the expected sale amount.
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.