The _harvestAndReport function incorrectly assumes a 1:1 peg between WETH and alETH when calculating _totalAssets, leading to inaccurate value reporting if the peg is broken or exchange rates deviate. This could result in mismanagement of strategy funds and protocol accounting errors.
The _harvestAndReport function in the StrategyArb.sol contract aggregates balances of alETH and WETH directly into _totalAssets without accounting for their exchange rate. This is problematic as WETH and alETH are distinct tokens that may not always maintain a 1:1 value ratio.
The calculation of _totalAssets in this line:
aggregates:
unexchanged (alETH held in the transmuter),
asset.balanceOf(address(this)) (loose alETH), and
underlyingBalance (WETH balance).
The function assumes a 1:1 value ratio between WETH and alETH, violating the intended purpose of _totalAssets, as described in its comment:
_totalAssetsprovides a trusted and accurate account of the total amount ofassetthe strategy currently holds, including idle funds.
A divergence in the exchange rate between WETH and alETH (e.g., due to market conditions or depegging) would lead to an inaccurate _totalAssets value.
If WETH and alETH are not pegged 1:1 (e.g., due to depegging of alETH), the total asset value will be incorrectly reported. This can lead to overestimating the strategy's value and ultimately wrong accountong in the protocol.
Manual Review
Fetch the current exchange rate for WETH to alETH using an oracle or price data from the transmuter. Use this rate to convert WETH balance into alETH-equivalent value before adding them together.
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.