The protocol is explicitly deployed to ZKsync Era (Layer 2), where Chainlink price feeds rely on the L2 Sequencer to post updates.
According to Chainlink documentation for L2 deployments, protocols must check the Chainlink L2 Sequencer Uptime Feed before consuming price data. In oracle_lib.vy, _stale_check_latest_round_data only queries the token price aggregator directly. If the ZKsync sequencer goes offline and comes back online, transactions may be executed against stale prices before the price feeds can update, allowing MEV bots and malicious actors to deposit depreciated collateral, mint DSC, or front-run liquidations unfairly.
Likelihood:
Occurs whenever the ZKsync L2 sequencer experiences an outage, restart, or network congestion event while Chainlink feeds are paused.
Impact:
Medium. Exploitation of stale oracle prices during sequencer downtime and recovery grace periods, leading to unfair liquidations or unbacked DSC minting.
During sequencer outages on ZKsync Era, oracle_lib does not query the sequencer uptime feed, accepting stale prices and allowing liquidations or mints before prices update.
Integrate Chainlink's Sequencer Uptime Feed in oracle_lib and revert if the sequencer is down or if the grace period after recovery has not elapsed.
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.