Chainlink price feed is not properly validated, which could lead to situations where stale prices will be deemed valid.
The checks section from baseOracleCircuitBreaker
in LibOracle.sol
:
Compares the block.timestamp
with timeStamp
(genereted by oracle.latestRoundData()
) + 2 hours
(staleness threshold).
The staleness threshold should correspond to the heartbeat of the oracle’s price feed, which in our case (ETH-USD 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
) is 3600 seconds
(1 hour).
Stale Chainlink prices could be passed down the logic tree and depending on the status of the source for the TWAP they might actually get used.
Severity is low because likelihood is extremely low even if the damage is high.
Manual review.
Use the price feed's heartbeat parameter as the staleness threshold in the baseOracleCircuitBreaker
:
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.