58797 sc low the tokeauto strategies implementation does not accurately report the actual assets held by the strategy

Submitted on Nov 4th 2025 at 13:57:23 UTC by @aman for Audit Comp | Alchemix V3arrow-up-right

  • Report ID: #58797

  • Report Type: Smart Contract

  • Report severity: Low

  • Target: https://github.com/alchemix-finance/v3-poc/blob/immunefi_audit/src/strategies/mainnet/TokeAutoEth.sol

  • Impacts:

    • Contract fails to deliver promised returns, but doesn't lose value

Description

Brief/Intro

The strategy includes a realAssets function intended to report the current assets held, but due to incorrect implementation in the TokeAutoEth and TokeAutoUSDStrategy contracts, it consistently reports a higher value than what can actually be redeemed.

Vulnerability Details

Let have a look how the realAssets() calcualte the assets held in strategy:

/v3-poc/src/strategies/mainnet/TokeAutoEth.sol:152
152:     function realAssets() external view override returns (uint256) {
153:         uint256 shares = rewarder.balanceOf(address(this));
154:         uint256 assets = autoEth.convertToAssets(shares);
155:         return assets;
156:     }

At line 153, the code fetches the Toke shares from the rewarder contract and calls autoEth::convertToAssets, which returns the potential redeemable assets but not the actual assets.

In my PoC, I used the previewRedeem function on the autoEth contract to measure the difference, which was approximately 0.00117 WETH for a 40 WETH deposit. this discrepancy grows with larger deposits.

Impact Details

Overstating realAssets makes the strategy unreliable, undermines trust, and can mislead users about the actual funds available for withdrawal.

References

https://github.com/alchemix-finance/v3-poc/blob/immunefi_audit/src/strategies/mainnet/TokeAutoEth.sol#L146-L150arrow-up-right

Proof of Concept

Proof of Concept

Note: This report assume that report: 58728 recommended fix has been implemented Add Following file to test/strategies Dir with the name POC.t.sol :

run with command : forge test --match-test test_strategy_auto_slippage -vvv --decode-internal

Was this helpful?