Normal behavior:
If the amount exceeds the owed debt, the excess is added to company_balance.
The pay_holding_debt() function lets the owner pay down the company’s accumulated holding_debt by sending ETH to the contract.
Specific issue: Because the owner directly controls both debt reduction and balance increment, this function can be used to manipulate solvency metrics.
By temporarily setting holding_debt = 0 and inflating company_balance, the owner can make the company appear solvent — allowing new investments or withdrawals even though true operational debt remains unpaid.
Likelihood:
1.Medium — Can happen anytime the owner wants to manipulate metrics or reset solvency before audits or before accepting new investor funds.
2.Only the owner can call the function, but as a privileged actor, they might exploit it to mislead external parties.
Impact:
High — Breaks trust and accounting consistency:
The owner can artificially increase solvency and reopen investment even when the company is underwater.
Subsequent investors may lose funds due to false financial reporting.
Potential to drain investor capital through manipulation.
Explanation:
By paying more ETH than the debt owed, the owner resets holding_debt to zero and inflates company_balance.
This makes the company appear fully solvent and profitable — even if prior operational losses exist — enabling fraudulent investment or withdrawal operations.
Explanation (brief)
Add stricter accounting validation for debt payments and emit detailed events for transparency.
Prevent overpayment from being counted as operational balance — instead, route it separately or require explicit acknowledgment.
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.