Normal behavior:
The contract uses timestamps to enforce a lockup period on investor withdrawals and other time-based actions (e.g., LOCKUP_PERIOD, share unlocks, or cooldowns).
Investors should only be able to withdraw after the set period elapses.
Explain the specific issue or problem in one or more sentences
Specific issue:
The code relies directly on block.timestamp for time comparison and assumes it is always accurate.
However, in Ethereum, miners can manipulate block.timestamp within ~15 seconds of the actual time.
When combined with short lock periods or sequential time checks (like “one week later”), this manipulation can enable:
1.Premature withdrawals,
2.Early unlocking of restricted actions,
3.Bypass of intended temporal security boundaries.
Likelihood:
Medium — Exploitable by miners or validators with block production control, or in private testnets where timestamp drift is more flexible.
Occurs naturally in short lockup or repeated “cooldown” systems where ±15 seconds makes a difference.
Impact:
High — Investors (or miners cooperating with them) can withdraw or redeem shares early, breaking vesting or incentive mechanisms.
Time-sensitive financial logic (e.g., bond maturity, auction settlement, or bonus timing) can be manipulated, reducing fairness and potentially leading to profit loss or reputation damage.
Explanation:
By slightly advancing the block’s timestamp, a miner or manipulated environment can pass the time check even before the lock period ends, thus allowing premature withdrawal.
Explanation (brief)
Avoid relying solely on block.timestamp for strict time-based constraints.
Use block numbers or add a minimum safety buffer to reduce manipulability.
In sensitive financial contexts, external verifiers or off-chain oracles can validate elapsed time more reliably.
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.