15,000 USDC
View results
Submission Details
Severity: medium
Valid

Missing checks for whether Arbitrum Sequencer is active

Summary

Chainlink recommends that users using price oracles, check whether the Arbitrum Sequencer is active

Vulnerability Details

If the sequencer goes down, the oracles may have stale prices, since L2-submitted transactions can still be sent via the Delayed inbox on L1.

Following snippet shows that Chainlink oracles are used for some prices, but there are no sequencer oracles in use:

function staleCheckLatestRoundData(AggregatorV3Interface priceFeed)
public
view
returns (uint80, int256, uint256, uint256, uint80)
{
(uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound) =
priceFeed.latestRoundData();
uint256 secondsSince = block.timestamp - updatedAt;
if (secondsSince > TIMEOUT) revert OracleLib__StalePrice();
return (roundId, answer, startedAt, updatedAt, answeredInRound);
}

Impact

Stale prices would lead to situations where unfair liquidations of users assets occur. In this case the users suffers a loss of funds.

Tool Used

Manual Review

Recommendations

Use a chainlink oracle to determine whether the sequencer is offline or not, and don't allow transactions to be executed while the sequencer is offline.

Support

FAQs

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