Normally, once an order has expired (past its deadline), it should be possible to remove the order and return tokens to the seller, freeing up storage and preventing locked funds.
In the current implementation, only the original seller can cancel their expired order. If the seller becomes inactive or loses access, the expired order cannot be cancelled by anyone else, resulting in tokens being locked in the contract and permanent storage bloat.
Likelihood:
Sellers frequently lose private keys, abandon accounts, or become inactive over time, especially on public DeFi platforms.
As time passes and the number of users grows, the contract will accumulate more expired orders that cannot be cancelled by anyone else.
Impact:
User funds may become permanently locked in expired orders, reducing trust in the protocol.
Contract storage will bloat with unremovable expired orders, increasing gas costs and potentially hindering future upgrades or migrations.
Explanation: This PoC demonstrates how an expired order becomes unremovable if the seller is inactive, which could lead to permanent token lockup and contract clutter.
Explanation: The mitigation allows anyone to cancel an order after its deadline has passed, ensuring that expired orders can always be cleaned up and locked tokens can be released, even if the seller is inactive.
By design only `seller` can call `cancelSellOrder()` on their `order`. But when an `order` expires, and the `seller` doesn't have access to the protocol, the expired `order `should be be able to be cancelled by an `admin`.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
View preliminary resultsAppeals are being carefully reviewed by our judges.
The contest is complete and the rewards are being distributed.