- Type: Exploit
- Network: Ethereum
- Total lost: ~$3MM USD
- Category: Price Manipulation
- Vulnerable contracts:
- Attack transactions:
- Attacker Addresses:
- Attack Block:: 13537922, 13537933
- Date: Nov 02, 2022
- Reproduce:
forge test --match-contract Exploit_VesperRariFuse -vvv
- Call
sweepToken
specifying the secondary address oftUSD
. - Take advantage of the new price of
tUSD
now that there is no underlying balance.
Rari Fuse is a platform in where anyone can create their own lending platform, specifying which assets can be traded. The attacker here targeted Pool 23, managed by Vesper.
The attack is relatively simple, although it does involve puting the capital at risk.
The attacker's call trace is a bit more complicated, but conceptually what they did was buying out all the VUSD
in the pool. The pool will now value VUSD
extremely high, much higher than its market price.
This can't be executed by a flash-loan, because the pool uses Uniswap's V3 Time-Weighted Average Price Oracle to set its price. But the attacker simply used its own capital. This is possible due to the relatively low liquidity of the pool (only ~200K of VUSD
available).
Normally, one would expected arbitrers to return the price to something close to the current market price. This didn't happen in time.
The attacker was thus left with a lot of overprice VUSD
, which they used to take out loans using it as a collateral.
- Most likely, the solution to this is offchain. If managing a low-liquidity pool, it is advisable to run an arbitrers to protect against this kind of manipulations.
- Setting the TWAP with a higher delay can also help smoothing the curve, but there's always a risk of going too far and not being able to react in time to natural price variations.