Chainlink aggregators have a built-in circuit breaker to prevent the price of an asset from deviating outside a predefined price range. This circuit breaker may cause the oracle to persistently return the minPrice instead of the actual asset price in the event of a significant price drop, as witnessed during the LUNA crash.
OffchainAggregator.sol#L680-L684
ChainlinkAggregators have minPrice and maxPrice circuit breakers built into them. This prevents the aggregator from updating the price below the minPrice specified at contract creation. If an asset's price falls below the minPrice, the protocol continues to value the token at the minPrice rather than its real value.
In distributeAssets() the price of an asset could be largely inflated resulting in liquidation rewards being wrongly calculated.
LiquidationPool.sol#L207
LiquidationPool.sol#L209
Note that this problem also arises for all the data feeds, especially in the calculation of the collateral value of the vaults. The return value of euroCollateral() could be inflated allowing drastically larger amount of EUROs being minted.
In the event that an asset crashes (i.e. LUNA) the protocol can be manipulated to give out EUROs tokens at an inflated price.
Manual review
The returned answer of Price Oracles should be cross-checked against the minPrice/maxPrice and revert if the answer is outside of these bounds:
This ensures that a false price will not be returned if the underlying asset's value hits the minPrice.
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.