Oracle Manipulation / Unsafe Oracle Read (Single latestRoundData Read + Price Integrity Risk)
Description:
The price is taken directly from latestRoundData() with minimal validation (answer > 0). This pattern can be unsafe depending on how StrataxOracle::getPrice is used (e.g., lending, liquidation, swaps), because it does not validate round completeness/freshness or other oracle safety conditions.
Impact:
If downstream logic relies on StrataxOracle::getPrice for critical accounting, an attacker may exploit oracle weaknesses (stale data, downtime, or manipulated underlying market feeding the oracle).
Missing checks can lead to using outdated or invalid rounds, causing incorrect pricing and potential loss of funds.
Increased systemic risk when used in sensitive protocols (borrow/repay, collateral valuation, mint/redeem).
Proof of Concept:
Current code only checks:
But does not verify:
updatedAt is recent (staleness)
answeredInRound >= roundId (round completeness)
roundId != 0
(optional) L2 sequencer uptime checks (if deployed on L2s)
Recommended Mitigation:
Perform stronger validation on oracle data and enforce staleness bounds:
If StrataxOracle::getPrice is used for high-stakes value transfers, also consider:
using Chainlink’s recommended L2 sequencer uptime feed checks (on supported L2s),
adding a circuit breaker / sanity bounds (max deviation),
or using TWAP/medianization where applicable.
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.