DeFiFoundry
50,000 USDC
View results
Submission Details
Severity: medium
Valid

No Sequencer Uptime Feed on Avalanche

Summary

Protocol checks if sequencer is up before fetching data from chain link price feeds. This works fine for Arbritrum but this will not work in Avalanche. hence latestRoundData() May Not Work Properly and will revert when this protocol is being used in Avalanche network

function _validatePrice(address perpVault, MarketPrices memory prices) internal view {
// L2 Sequencer check
(
/*uint80 roundID*/,
int256 answer,
uint256 startedAt,
/*uint256 updatedAt*/,
/*uint80 answeredInRound*/
) = AggregatorV2V3Interface(sequencerUptimeFeed).latestRoundData();
bool isSequencerUp = answer == 0;
require(isSequencerUp, "sequencer is down");
// Make sure the grace period has passed after the sequencer is back up.
uint256 timeSinceUp = block.timestamp - startedAt;
require(timeSinceUp > GRACE_PERIOD_TIME, "Grace period is not over");
...
}

Vulnerability Details

The Chainlink L2 Sequencer Uptime Feed is designed for rollups, not Avalanche.
The sequencerUptimeFeed address you provide will likely be invalid or return unexpected data.
latestRoundData() May Not Work Properly:

https://github.com/CodeHawks-Contests/2025-02-gamma/blob/84b9da452fc84762378481fa39b4087b10bab5e0/contracts/KeeperProxy.sol#L165

Impact

_validatePrice() in keeperProxy.sol will revert in Avalanche network. This function will revert wherever it is being used like runAction(), nextActionRun() and keepers will receive revert msgs when they call these functions

Tools Used

Manual Review

Recommendations

Remove sequence feed check logic when deploying in Avalanche blockchain. No need of this check. We can directly use chain link price feeds

Updates

Lead Judging Commences

n0kto Lead Judge 5 months ago
Submission Judgement Published
Validated
Assigned finding tags:

finding_Avalanche_has_no_sequencer

Likelihood: High, run and runNextAction will revert. Impact: Low, any deposit will be retrieve thanks to cancelFlow.

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.