A critical vulnerability allows order creator to bypass cancellation cooldowns due to uninitialized timestamps (updatedAtTime
) and incorrect validation logic. This breaks core protocol guarantees for order cancellation.
OrderHandler.sol
(order creation/cancellation logic)
OrderUtils.sol
(timestamp handling)
When an order is created via createOrder
, the updatedAtTime
field is not set, leaving it at its default value (0).
The cancellation logic uses order.updatedAtTime()
(which is 0 for new orders)
Order creator calls cancelOrder
with a random/invalid key.
OrderStoreUtils.get()
returns a default order struct with updatedAtTime = 0
.
validateRequestCancellation
computes requestAge = currentTimestamp - 0 = currentTimestamp
.
If currentTimestamp > requestExpirationTime
, the check passes, allowing cancellation of a non-existent order.
Legitimate orders with updatedAtTime = 0 can be cancelled immediately, violating cooldown guarantees.
Manual review
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.