The price acquisition of the _getData() function lacks validation of the returned data
When getting the oracle price, the getData function only determines the data and timestamp, without considering answeredInRound and roundID.
Scenario 1: Normal situation
• Current round roundID = 5.
• Oracle returns:
• answeredInRound = 5
• If answeredInRound >= roundID is satisfied, the data is considered valid and can continue to be used.
Scenario 2: Data expiration
• Current round roundID = 5.
• Oracle returns:
• answeredInRound = 4
• If answeredInRound >= roundID is not satisfied, require is triggered, prompting that the data is expired to avoid incorrect use.
If stale data is allowed, attackers may be able to influence system behavior by manipulating data from old rounds.
Manual review
LightChaser: ## [Medium-4] Insufficient oracle validation
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.