In SettlementBranch
, the function fillOffchainOrders
handling offchain orders contains a vulnerability where users can grief other users by signing the same order multiple times or signing invalid orders and sending it to keeper. This can cause a denial of service (DoS) by preventing valid orders from being processed.
The code relies on a unique salt
to prevent order replay. However, users can sign the same order multiple times with the same salt
. When keeper
calls fillOffchainOrders
with same order signed by users, it will be filled once but revert second time. Due to this, the function fillOffchainOrders
will revert resulting in not processing of other users.
There are many scenarios where _fillOrder
reverts and it's being called by fillOffchainOrders
. If any one order is invalid, it will cause the whole transaction to revert.
User A creates an order and signs it with a specific salt
or signs some order which is going to be reverted.
User A, sends the order to the keeper.
When keeper calls fillOffchainOrders
along with orders of other users, the function will revert.
Causes denial of service in fillOffchainOrders
.
Manual review
Instead of reverting for invalid orders, the function should return so that other orders can be processed.
If you send 1 cancel and 1 create it should still run the cancel, not revert everything.
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.