Incorrect Asset Accounting in _harvestAndReport()
Leads to Share Price Undervaluation
In the _harvestAndReport()
function, claimable WETH from the transmuter is not included in the total assets calculation, despite being an asset owned by the strategy. The function checks for claimable amounts but neither claims them nor includes them in the final accounting.
This accounting error leads to:
Undervaluation of the strategy's total assets
Incorrect share price calculations
Users receiving fewer shares than they should when depositing
Users receiving more assets than they should when withdrawing
This creates an arbitrage opportunity where users could:
Observe large claimable balances
Withdraw their shares at an undervalued rate
Call claimAndSwap()
to realize the uncounted value
Re-deposit at the lower share price
Manual Review
Either:
Include claimable assets in total calculation:
solTotalAssets = unexchanged + asset.balanceOf(address(this)) + underlyingBalance + claimable;
OR
Actually claim the WETH during harvest (preferred approach as it also allows compounding):
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.