Normal Behavior: The BaseChainlinkFunctionsOracle contract is designed to send requests to Chainlink Functions and process the responses securely. It uses a requestId to track the latest request sent and expects to receive a response corresponding to this requestId.
Problem: The BaseChainlinkFunctionsOracle::fulfillRequest function does not verify if the requestId of the incoming response matches the s_lastRequestId, which is the ID of the last request sent. This omission can allow the processing of unsolicited or malicious responses.
Likelihood: Low
Reason: This scenario will occur when there is an error in the network or/and when a part of the DON is compromised.
Impact: High
Reason: The impact is critical because if exploited, this vulnerability could lead to the acceptance of incorrect or malicious data in both the RAACPrimeRateOracle and RAACHousePriceOracle. This could result in inaccurate prime rates and house prices being used within the RAAC protocol.
According to the documentation (docs.chain.link/chainlink-functions/tutorials/api-use-secrets) the BaseChainlinkFunctionsOracle::fulfillRequest function shoud check the requestId sent by the Decentralized Oracle Network against the s_lastRequestId sent by sendRequest function.
This mitigation ensures that only responses corresponding to the latest request are processed, preventing the acceptance of unsolicited or malicious data.
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.