The function createVestingSchedule() does not validate that startTime should be >= block.timestamp . This could allow an authorized orchestrator to set a vesting schedule with a startTime in the past. Since the _calculateReleasableAmount() function checks the elapsed time from startTime, this could result in immediate vesting of a large portion of tokens.
Code Reference:
createVestingSchedule() does not validate startTime:
Potential Exploit Scenario:
The orchestrator creates a vesting schedule with startTime set 700+ days in the past.
The release() function is called, and _calculateReleasableAmount() allows full token release immediately.
The orchestrator drains the vesting allocation without the expected gradual vesting.
Add a validation check to ensure startTime is not in the past:
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.