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.
StrataxOracle contract fails to check if the price is stale, which can mess up swap calculations.
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.