StrataxOracle::getPrice fetches the latest price from a Chainlink feed and returns it to Stratax.sol, where it is used to calculate flash loan amounts, collateral withdrawal sizes, and liquidation thresholds. The only validation performed is that the returned answer is positive.
latestRoundData() returns five values: roundId, answer, startedAt, updatedAt, and answeredInRound. The implementation destructures only answer and silently ignores the remaining four. This means a frozen feed (no updates due to node outage or circuit breaker) or an unfinished round will return an accepted price with no on-chain signal.
Likelihood:
A Chainlink node infrastructure outage or deliberate circuit breaker activation freezes updatedAt while market prices continue to move — a scenario with historical precedent (LUNA crash, May 2022).
A Chainlink round transition leaves answeredInRound < roundId, meaning the on-chain answer was computed in a previous round and the current round is unresolved.
Impact:
A frozen high collateral price causes _executeUnwindOperation to calculate too little collateral to withdraw. The 1inch swap returns fewer funds than needed to repay the flash loan, reverting with "Insufficient funds to repay flash loan" and locking the user's position while Aave can liquidate it using its own live oracle.
A stale price when opening a position allows creating undercollateralized leverage or incorrectly blocks a healthy position from being opened.
A stale price during a forced unwind (Stratax.sol:570–571) leads to extracting the wrong collateral amount, potentially leaving residual debt or over-extracting collateral from the user.
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.