In normal behavior, the createSellOrder
function allows a user to safely transfer a specified amount of an allowed ERC20 token to the contract using safeTransferFrom
. After the transfer succeeds, a new order is stored in the contract’s state with details such as the seller, token, amount, price, deadline, and an active status.
The contract relies on a manipulable on-chain price oracle (e.g. a low-liquidity DEX pair) to fetch token prices during critical operations. An attacker can manipulate this price source — typically by swapping tokens to artificially inflate or deflate the price — and then immediately interact with the contract to exploit incorrect pricing logic, such as creating an underpriced or overpriced order.
Likelihood:
The issue will occur when the contract fetches token prices from a low-liquidity or manipulable on-chain source, such as a DEX pair without proper price stabilization mechanisms.
It will also occur during the same transaction in which the attacker manipulates the price and exploits it immediately after, such as creating an order or triggering a sensitive function that depends on the manipulated price.
Impact:
Users may unknowingly buy or sell tokens at severely incorrect prices, resulting in significant financial loss.
The attacker may repeatedly exploit the mechanism to drain protocol funds, front-run trades, or extract value from users interacting with the system.
PoC Results:
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.