Zaros utilizes Chainlink Streams Lookup to perform the logic to fill orders, but the current implementation has a critical issue.
The project is not able to pay the necessary fee to verify the report provided by Chainlink.
According to the docs, to verify each report a fee of 0.35 cents is charged. https://docs.chain.link/data-streams/billing
Chainlink offers different options to pay those fees, it can be using the native token(ARB) LINK or other ERC20s listed on their website.
Zaros decided to implement the version with the native token, as it is shown here:
The problem is: the current contract that calls this function doesn't accept ETH, therefore msg.value
is going to be always 0. This will make the transaction revert and cause a DoS to fillOffchainOrders
and fillMarketOrder
Let's analyse from where the verifyReport
is called:
fillMarketOrder/fillOffchainOrders
-> verifyOffchainPrice
-> verifyDataStreamsReport
-> verifyReport
During this flow, no functions are marked payable
therefore once the project is deployed on Arbitrum, the project will not be able to fill any order.
The sponsor, after the contest began, revealed that they have a "special" arrangement with Chainlink. However, this information was not disclosed as a Known Issue, and Chainlink does not mention the possibility of "special deals" with protocols.
Additionally, there is no "special" smart contract used in the project for the chainlink verifier. As a result, the current implementation is flawed because msg.value
is passed as zero to the Chainlink verifier.
The data stream will not provide the requested data. Causing DoS in the mechanism to fillOrders
.
Manual Review
https://docs.chain.link/chainlink-automation/guides/streams-lookup
https://docs.chain.link/data-streams/billing
Mark the fillOrder functions as payable so the contract can receive ETH. Additionally, a check can be added to see whether the msg.value
meets the necessary amount needed to verify a report.
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.