DeFiFoundry
60,000 USDC
View results
Submission Details
Severity: low
Invalid

Not all Chainlink feeds have valid minAnswer and maxAnswer

Summary

Not all Chainlink feeds have valid minAnswer and maxAnswer.

Vulnerability Details

In src/external/chainlink/ChainlinkUtil.sol, aggregator.minAnswer()and aggregator.maxAnswer()are used to check whether the price is within a reasonable range.

IOffchainAggregator aggregator = IOffchainAggregator(priceFeed.aggregator());
int192 minAnswer = aggregator.minAnswer();
int192 maxAnswer = aggregator.maxAnswer();
if (answer <= minAnswer || answer >= maxAnswer) {
revert Errors.OraclePriceFeedOutOfRange(address(priceFeed));
}

However, according to Chainlink documentation

maxAnswer This value is no longer used on most Data Feeds. Evaluate if your use case for Data Feeds requires a custom circuit breaker and implement it to meet the needs of your application. See the Risk Mitigation page for more information.
minAnswer This value is no longer used on most Data Feeds. Evaluate if your use case for Data Feeds requires a custom circuit breaker and implement it to meet the needs of your application. See the Risk Mitigation page for more information.

Both of the values are deprecated in most of Arbitrum's feeds, Making this check ineffective.

Impact

The price band check is insufficient and ineffective.

Likelihood: high - Both of the values are deprecated in most of Arbitrum's feeds.

+

Impact: low - The check on whether the price is within a reasonable range would be ineffective.

=

Severity: low

Tools Used

Manual review

Recommendations

minAnswer and maxAnswercan be overwitten locally.

Updates

Lead Judging Commences

inallhonesty Lead Judge 11 months ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Support

FAQs

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