58386 sc low rewards claimed during deallocation remain stranded on strategy and unaccounted

Submitted on Nov 1st 2025 at 20:38:30 UTC by @zcai for Audit Comp | Alchemix V3arrow-up-right

  • Report ID: #58386

  • Report Type: Smart Contract

  • Report severity: Low

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

  • Impacts:

    • Permanent freezing of unclaimed yield

Description

Brief/Intro

The strategy claims reward tokens directly to its own address during deallocation operations but lacks a mechanism to forward these already-claimed rewards to the vault. This creates a persistent desynchronization where external value accrues to the strategy but remains untracked in vault accounting, effectively stranding earned rewards that belong to users.

Vulnerability Details

During deallocation operations, the _deallocate() function calls rewarder.withdraw() with the claim parameter set to true, which transfers any pending reward tokens directly to the strategy contract address. However, the reward synchronization mechanism in _claimRewards() only handles pending rewards that remain at the rewarder contract level.

The issue manifests through the following sequence:

  1. When _deallocate() executes, it calls rewarder.withdraw(address(this), sharesNeeded, true) on line 76

  2. The claim=true parameter causes any pending reward tokens to be transferred to the strategy contract

  3. Subsequently, _claimRewards() uses rewarder.getReward(address(this), address(MYT), false) which only forwards pending rewards from the rewarder to the vault

  4. Since rewards were already claimed during deallocation, no pending rewards remain at the rewarder level

  5. The reward tokens transferred to the strategy during deallocation remain stranded with no mechanism to forward them

The realAssets() function excludes reward token balances entirely, reporting only the underlying asset value and ignoring any reward tokens held by the strategy. This creates a permanent accounting discrepancy where the strategy holds value that is never reflected in vault calculations or distributed to users.

Impact Details

Users experience passive value loss as reward tokens earned by their deposited capital become permanently inaccessible. These stranded rewards accumulate over time on the strategy contract but are excluded from the vault's asset calculations and cannot be claimed through the existing reward distribution mechanism. While principal assets remain unaffected, the loss of reward value represents a direct economic impact to vault participants.

References

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

https://github.com/alchemix-finance/v3-poc/blob/immunefi_audit/src/strategies/mainnet/TokeAutoEth.sol#L95-98

https://gist.github.com/i-am-zcai/6b24ee4133605f72948ab2c7fb9677ef

Proof of Concept

Proof of Concept

src/test/poc/TokeAutoEth_StaleRewards.t.sol

Was this helpful?