The protocol relies on Chainlink oracles to value assets for critical LTV and health factor calculations.
The oracle integration retrieves price data without verifying the data timestamp, accepting potentially frozen or outdated prices during network downtime.
Likelihood:
Chainlink feeds stop updating during extreme network congestion or L2 outages.
No validation exists to reject these stale periods.
Impact:
Undercollateralized positions are created during market crashes if old high prices are used.
Users are unfairly liquidated if prices freeze at low values during a recovery.
The following PoC demonstrates the missing validation in StrataxOracle.getPrice. It shows that updatedAt time is not retrieved or checked, meaning even if the last update was days ago (stale), the contract still accepts the price and returns it as valid.
Update the latestRoundData call to retrieve all return values, including updatedAt and answeredInRound. Implement checks to ensure updatedAt is within a reasonable threshold (e.g., the feed's heartbeat or 1 hour) and that the round data is complete.
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.