The KeeperProxy
contract hardcodes the Arbitrum sequencer uptime feed address and enforces mandatory sequencer checks in its price validation logic. This design makes the contract completely unusable on Avalanche, despite the protocol's intended multi-chain deployment strategy, as Avalanche does not utilize a sequencer architecture.
The vulnerability exists in two parts:
Hardcoded Arbitrum-specific address:
This address is specific to Arbitrum and does not exist on Avalanche. Any attempt to interact with this address on Avalanche will revert.
Mandatory sequencer checks in _validatePrice()
:
The _validatePrice()
function is a critical component that validates prices before executing keeper operations.
On Avalanche, the sequencer check will fail because:
The sequencerUptimeFeed
address is invalid.
The call to latestRoundData()
will revert, causing the entire function to fail.
All calls to _validatePrice
will revert on Avalanche because the sequencer check fails. This prevents the execution of critical functions like run
, runNextAction
, and cancelOrder
.
Manual Review
Implement chain-specific deployment logic:
Likelihood: High, run and runNextAction will revert. Impact: Low, any deposit will be retrieve thanks to cancelFlow.
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.