Although there is a check for stale Oracle status on price feeds, this will not be reliable across other chains.
The value of TIMEOUT is set to 3 hours or 10800 seconds. This constant value is used to define the maximum allowable time difference between the current block's timestamp and the timestamp of the latest round data from the Chainlink oracle.
When calling getTokenAmountFromUsd, getAccountCollateralValue and getUsdValue,
the contract will call staleCheckLatestRoundData to check if the latest round data is stale.
If the latest round data is stale, the contract will revert.
However, since the contract is to be deployed across multiple chains, the block timestamp will be different on each chain. This means that the value of TIMEOUT will be different on each chain. This could lead to a situation where the oracle validation will return different results on different chains.
Manual Review
Suggested solution: Adjust the value of TIMEOUT based on the specific block time of each chain to ensure consistent oracle validation.
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.