Chainlink aggregators have a built in circuit breaker if the price of an asset goes outside of a predetermined price range. The result is that if an asset faces a huge drop in value (i.e. LUNA crash) the price of the oracle will continue to return the minPrice instead of the actual price of the asset.
This happened before to Venus on BSC when LUNA imploded.
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.
The logic in Oraclelib.sol looks like this
As per the logic , if the price of the asset drops below the minPrice, the protocol will continue to value the token at minPrice instead of it's actual value.
Example:
TokenA has a minPrice of 1 dollar . The price of TokenA drops to 0.10 dollar . The aggregator still returns 1 dollar allowing the user to borrow against TokenA as if it is $1 which is 10x it's actual value .
which leads to a protocol malfunction .
In the event that an asset crashes (i.e. LUNA) the protocol can be manipulated to mint out dsc at an inflated price .
Manual review .
Pull minAnswer from the aggregator and revert it price == minAnswer
or ,
Use a secondary on-chain liquidity-based oracle like Uniswap TWAP to check for the price difference. Revert when price difference is too high.
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.