Normal behavior: oracle reads should validate round freshness and consistency (updatedAt, answeredInRound, etc.) before returning prices.
Issue: getPrice only checks answer > 0 and does not validate freshness or round integrity. Any positive stale round is accepted and consumed by leverage/unwind calculations.
Likelihood:
Reason 1 // Chainlink feeds can lag updates during market stress or data-source degradation.
Reason 2 // This oracle function is directly used by position sizing paths and executes frequently.
Impact:
Impact 1 // Borrow/withdraw sizing may be based on stale prices and become unsafe.
Impact 2 // Users can face higher revert rate, worse execution, or liquidation exposure.
This PoC deploys a mock Chainlink feed with valid decimals but intentionally stale/inconsistent round metadata (updatedAt = 1, answeredInRound < roundId). getPrice still returns the value, demonstrating that freshness and round-integrity are not enforced.
The mitigation adds standard Chainlink guardrails: positive answer, non-zero/fresh updatedAt, and round consistency (answeredInRound >= roundId). This blocks stale rounds from propagating into leverage and unwind sizing.
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.
The contest is complete and the rewards are being distributed.