A missing validation check in PreMarkets::listOffer
allows bid takers to relist aborted stock, which, in an offer operating in turbo mode, results in offers with no collateral backing. Due to another issue, bid takers may be compensated using other users' tokens, as the user relisting the offer faces no penalties.
If an ask maker chooses to abort their offer, bid takers can also abort their participation by calling PreMarkets::abortBidTaker
. This returns the tokens originally sent to the ask maker when the offer was created, effectively ending the buy-sell relationship with no further liabilities. However, if the bid taker (now acting as the ask maker) is allowed to relist the offer by calling PreMarkets::listOffer
while the offer is in turbo mode, a new, unbacked offer is created. This offer lacks any collateral or liability, allowing the bid taker (now the ask maker) to receive tokens from a new taker without having to settle any point tokens. No penalties can be applied since no collateral was locked in the protocol.
Refer to the example PoC, where user
acts as the original maker, user1
as the first taker who then lists the unbacked offer for sale, and user2
as the user who takes the unbacked bid offer:
Manual review.
Add missing check in PreMarkets::listOffer
forcing bid takers to abort their offer if the maker aborted when operating in turbo mode:
Note that it is not necessary to implement the check for protected offers since bid takers will need to deposit collateral when listing the offer, therefore if they decide to abort, they will still need to provide the point tokens, otherwise their collateral will be sent to the new bid takers.
Leaving high severity for now but will leave open for appeals. Technically, users can choose not to transact this type offers if they are aware of such undercollaterized relisted offers, in which case it will have no impact. However, if subsequent takers transact this relisted offers, this can allow profits without having to settle any points.
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.