57452 sc high on chain quoter reliance and spot price based swaps enable pool manipulation and value extraction from protocol controlled conversions usdc long
Impacts: Direct theft of any user funds, whether at-rest or in-motion, other than unclaimed yield
Severity: High — The contract derives min-out from an on-chain Uniswap V3 Quoter at execution time, which is spot-based and manipulable by MEV/sandwich attacks, enabling direct economic loss on protocol-initiated swaps.
Description
Brief / Intro
The contract derives amountOutMinimum from Uniswap V3’s Quoter on-chain at execution time. Because the Quoter returns spot outputs based on current pool state, searchers can manipulate the pool just before inclusion and force a low quote. The swap then executes with a too-low amountOutMinimum, causing systematic execution loss on protocol-controlled conversions (USDC ↔ LONG) such as venue fee conversions, AutoConvert payments, and buyback/burn.
Vulnerability Details
In BelongCheckIn._swapExact, amountOutMinimum is computed on-chain from Quoter, which reflects manipulable spot state:
The swap then uses this min-out with deadline: block.timestamp:
There is no anchor price (TWAP/Chainlink) check, no minimum-liquidity check, and no volatility circuit breaker.
Affected flows:
venueDeposit → _swapUSDCtoLONG (fees to LONG)
payToVenue (AutoConvert LONG→USDC)
distributePromoterPayments (USDC→LONG)
_handleRevenue buyback (USDC→LONG)
Attack path (summary)
1
Pre-trade the target pool to worsen the spot price.
2
Victim transaction calls Quoter on-chain and derives a too-low amountOutMinimum from the manipulated spot state.
3
Swap executes because actual execution price is above the artificially-low minimum, transferring value to the attacker.
4
Attacker back-runs to unwind and capture profit (sandwich/MEV).
Impact Details
Direct economic loss on each protocol-initiated swap when spot is manipulated (sandwich/MEV). For example, on a 5% adverse move, a $50k notional swap can lose ~$2.5k. Loss scales with swap size and frequency.
Severity: High. Routinely exploitable by MEV and persists until quoting is moved off-chain or bounded by an anchor.
Uniswap V3 Quoter docs (not recommended for on-chain production min-out derivation)
General MEV/sandwich references for spot-price manipulation around swaps
Link to Proof of Concept
https://developer.metamask.io/
Proof of Concept
Test: Security: Quoter minOut manipulation (click to expand)
Add this to /home/jo/audit-comp-belong/test/v2/platform/belong-check-in-bsc-fork.test.ts and run: LEDGER_ADDRESS=0x0000000000000000000000000000000000000001 PK=0x1000000000000000000000000000000000000000000000000000000000000001 npx hardhat test test/v2/platform/belong-check-in-bsc-fork.test.ts --grep "Security: Quoter minOut manipulation"
If you want, I can propose specific remediations (e.g., using TWAP/Chainlink anchoring, off-chain quoting, adding min-liquidity checks, volatility circuit breakers, or delaying quoting) and example code patches for BelongCheckIn._swapExact. Which would you prefer?