The contract uses UniswapV2Adapter and UniswapV3Adapter, which are well-known DEX adapters.
But the contract does not directly enforce that dexAdapter
is always Uniswap.
An attacker could trick the contract into using a fake adapter with the same function signatures as Uniswap but malicious logic inside.
The functions do not follow the Checks-Effects-Interactions (CEI) pattern, making them vulnerable to reentrancy and state inconsistencies.
The function makes an external call to the DEX adapter before updating internal state:
Why is this dangerous?
If dexAdapter
is malicious, it can re-enter the function before state updates occur.
If the swap fails, the contract state remains unchanged, leading to inconsistencies and possible fund loss.
Reentrancy risk
Swap Manipulation
Failed Swaps Leave Inconsistent State
Manual Review
Check inputs first
Deduct fees & update internal state before calling dexAdapter
Execute swaps only after internal state is updated
Validate swap results before finalizing execution
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.