Chainlink is heavily relied upon within DSC, infact it's the only oracle body being used, which exarcebates this issue.
Now it'd be key note that asides this blog from openzeppelin mentioning that it is possible that Chainlink’s "multisigs immediately block access to price feeds at will". Oracles can also be taken down for maintenance/safety reasons, which is why it's a pretty popular practise to wrap chainlink queries in a try/catch, and if the call fails for whatever reason the fallback mechanism is there to sort things out and prevent a denial of service from occurring when trying to access the price feed.
See Summary
Additionally note that the query to chainlink reverting means that all instance of getting price is inacessible and all actions attached to them, for example the call to get the health factor would no longer be accessible.
See the getHealthFactor() function of
DSCEngine.sol:
This would be iacessible since the getUsdValue() function would revert the call.
Manual Audit
Use a try/catch block around the latestRoundData()
calls. If these calls revert, the catch block should handle the failure accordingly. This can include a fallback mechanism, an alternative oracle call, or a contingency procedure to pause operations or any reasonable mechanism.
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.