SynLev Rug Pull
What happened
The removeLiquidity() function makes a call of the external function getSharePrice() in vaultHelper contract:
vaultHelper is a proxy contract with EOA owner - 0xa2e316cb…5c83c4
The owner could set any address as price aggregator in vaultHelper calling proposeVaultPriceAggregator()
A new aggregator (unverified contract) was provided in the transaction:
This hidden aggregator set the share price to 0.
After this, the contract deployer easily withdrew all vault balance with zero share price which can be found in the event log: Tx 0x216d…0951
The contract deployer added liquidity into the contracts multiple times:
The contract deployer invoked the removeLiquidity() function into the vault contract to withdraw 541.27 and 20.41 ETH onto his wallet at:
The contract deployer invoked the ethremove() function into the synSales contract to withdraw 152.09 ETH onto his wallet at:
The contract deployer invoked the removeLiquidity() function into the other vault contract to withdraw 104.41 ETH onto his wallet at:
The contract deployer invoked the removeLiquidity() function into the other vault contract to withdraw 10.59 ETH onto his wallet at:
The contract deployer invoked the removeLiquidity() function into the other vault contract to withdraw 24.26 ETH onto his wallet at:
Protocol details
Evidence
- report Report cryptonary.com
- analysis Web Archive web.archive.org
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.