The KeeperProxy relies on a hardcoded Chainlink sequencer uptime feed address, which is not valid on all L2s (Avalanche, Optimism) or future network upgrades.
The sequencer check uses a fixed address (0xFdB631F5EE196F0ed6FAa767959853A9F217697D), which is specific to Arbitrum. If the contract is deployed on another L2, this check will fail.
POC:
Deploy KeeperProxy on Optimism.
Observe _validatePrice skips sequencer checks (invalid feed returns answer != 0).
Keeper executes trades using stale prices during sequencer downtime.
Incorrect sequencer status monitoring on unsupported networks, leading to stale price usage and faulty keeper actions.
Manual Review
Make the sequencer feed address configurable by the owner or use a network-aware factory.
Please read the CodeHawks documentation to know which submissions are valid. If you disagree, provide a coded PoC and explain the real likelihood and the detailed impact on the mainnet without any supposition (if, it could, etc) to prove your point.
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.