The vault allows users to transfer their ERC-4626 shares freely at any time, and also provides a cancelParticipation() function that refunds a user’s full stakedAsset[msg.sender] amount while burning only their current share balance.
Because the cancelParticipation() refund logic depends on stakedAsset[msg.sender] (which is not adjusted when the user transfers shares), an attacker can exploit this by transferring their shares to another address before requesting a refund.
The new holder of the shares still possesses valid ERC-4626 tokens that can be redeemed at any time using the inherited withdraw() or redeem() functions.
Impact
This vulnerability allows an attacker to withdraw more than their fair share of vault assets immediately, completely breaking the vault’s accounting model. A single attacker can drain the entire vault.
Likelihood: High
The exploit is trivial: only standard ERC-20 transfer() and ERC-4626 redeem() calls are required. No timing or complex setup is needed.
Impact: High
Results in direct, immediate, and total financial loss. The vault’s solvency can be destroyed by the first malicious participant.
Step 1 - Victims deposit
10 honest participants each deposit 100 ETH
Total deposited by victims: 1,000 ETH
Vault balance after fees: 985 ETH
Step 2 - Attacker executes: Deposit -> Transfer -> Cancel -> Redeem
Deposit
Attacker deposits 100 ETH
Receives 98.5 shares (worth ≈ 98.5 ETH after fees)
Transfer
Attacker transfers all 98.5 shares to wallet2
Cancel Participation
Attacker calls cancelParticipation()
Contract refunds 98.5 ETH (based on original stake)
Redeem via Wallet2
wallet2 now holds 98.5 shares
Immediately calls the inherited redeem() function
Receives ≈ 89.54 ETH worth of vault assets (based on current pool ratio)
Result:
Attacker deposit: 100 ETH
Refund received (cancel): 98.5 ETH
Redeemed via wallet 2: 89.54 ETH
Total gained: ≈ 188.04 ETH
This can be repeated until the vault is fully drained!
Make shares non-transferable until after event, by overriding _update function.
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.