in the _freeFunds function across all strategy variants, here's the affected code with the vulnerability marked
because of an incorrect assumption in the withdrawal logic. When the requested withdrawal amount exceeds the available balance, the function withdraws the entire available balance instead of limiting the withdrawal to the requested amount.
the actual state change (balance reduction) can exceed the intended state change specified by the input parameter (_amount).
The violation occurs because:
Input validation exists but handles the edge case incorrectly
The logic prioritizes maximum withdrawal over respecting the requested amount
The implementation fails to maintain the core invariant that withdrawal impact should be bounded by the requested amount
the affected code with indication of the vulnerability in the _freeFunds function
due to incorrect handling of withdrawal amounts when interacting with the Transmuter contract. The code assumes it should withdraw the entire available balance when the requested amount exceeds it, violating the fundamental withdrawal safety.
Impact Across Deployments:
Ethereum Mainnet (StrategyMainnet.sol):
Affects Curve-based alETH/WETH strategy
Can impact large-scale withdrawals through Curve pools
Optimism (StrategyOp.sol):
Impacts Velodrome-based strategy
Affects alETH/WETH liquidity on Optimism
Arbitrum (StrategyArb.sol):
Affects Ramses-based strategy
Impacts cross-chain alETH/WETH handling
The vulnerability directly interacts with:
in the _freeFunds function
the issue stems from incorrect handling of the edge case where _amount > totalAvailable:
Instead of treating this as an error condition
Or capping the withdrawal at the requested amount
The code proceeds to withdraw the entire available balance
The root cause is a logical error in handling insufficient balances, rather than maintaining withdrawal amount boundaries, the code opts to withdraw everything available, breaking the fundamental contract between the caller and the withdrawal function.
This affects all three blockchain deployments (Ethereum, Optimism, Arbitrum) and their respective DEX integrations (Curve, Velodrome, Ramses) when handling alETH/WETH withdrawals through the Transmuter system.
these changes provide:
Strict enforcement of withdrawal boundaries
Better transparency through events
Additional safety checks
Protection against large unexpected withdrawals
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.