ChainlinkUtil.getPrice implements sequencerUptime feed checks to ensure the L2 sequencer is up and runing. But these checks are not implemented corectly. Callers may consume stale or incorrect price data.
tartedAt: This timestamp indicates when the sequencer changed status. This timestamp returns0if a round is invalid.
When using Chainlink's sequencerUptimeFeed.latestRoundData() function, the startedAt value will be 0 if the update round is invalid or incomplete. However, the getPrice() function does not verify whether startedAt is 0.
If the round is invalid, the getPrice() cannot detect that the sequencer has just come back up after an outage and is still in the grace period. Consequently, a caller might inadvertently consume stale or incorrect price data.
Chainlink's sample code does not implement this check. For details please see here .
When the sequencer comes back up after an outage, startedAt returned by latestRoundDatawill be 0 for invalid rounds. Callers can consume stale or incorect price data.
Manual review
Revert when startedAt returned by sequencerUptimeFeed.latestRoundData() is 0.
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.