Zaros introduced a way for traders to create orders by signing them off-chain on the frontend.
This functionnality allows users to interact with their positions using a sort of order limit and without spending gas.
These orders are later on filled by the keepers through the SettlementBranch::fillOffchainOrders() function that uses ECDSA.recover from Openzeppelin to recover the address that signed the order and compare it to the account on which the order will be executed to make sure it is legitimate.
In order to prevent signature malleability attacks, ECDSA.recover() from Openzeppelin implemented the following sets of requirements that can be found in the library implementation :
the s value must be in the lower half order (taken from the negative side of the curve)
the v value to be either 27 or 28
Depending on the library used by the frontend, these requirements might not be met which would make the signature to be verified invalid from Openzeppelin ECDSA.recover() perspective.
Legitimate signatures can fail during the verification process, discarding them while they should not, which can disadvantage traders on Zaros.
Manual review
Enforce or adapt the library used by the frontend to align with Openzeppelin's s and v requirements following their recommendations.
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.