The issue stems from profit_max_unlock_time not being properly constrained when updated. The system currently does not verify whether the new unlock time exceeds the expected remaining period, which could lead to an incorrect extension of the profit unlocking window.
The sponsor clarified that profit_max_unlock_time should not be greater than the allowed period, meaning the unlock time can decrease but must not increase beyond the predefined limit.
Imagine a scenario where an external agent verified newly increased unlock time before price parameters are updated this allows for an incorrect price retrieve by transaction that utilizes the oracle before the price parameters are updated
The issue is that the parameters do not currently satisfy the unlock time, meaning that prices read before the params are updated might not be accurate. This can lead to a lower calculation of unlocked shares, affecting how profits are distributed.
Manual Review
Modify update_profit_max_unlock_time() to enforce the following condition:
- See [here]([https://github.com/CodeHawks-Contests/2025-03-curve?tab=readme-ov-file#blockhash-oracle)](https://github.com/CodeHawks-Contests/2025-03-curve?tab=readme-ov-file#blockhash-oracle) on how it is used to verify storage variable - All state roots and proofs must be verified by the OOS `StateProofVerifier` inherited as `Verifier` (where the price values and params are extracted), so there is no proof that manipulating timestamp/inputs can affect a price update - It is assumed that the OOS prover will provide accurate data and the OOS verifier will verify the prices/max unlock time to be within an appropriate bound/values - There is a account existance check in L96 of `ScrvusdVerifierV1.sol`, in which the params for price updates are extracted from
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.