49731 sc high theft on re added tokens

Submitted on Jul 18th 2025 at 19:31:13 UTC by @oswald23321 for Attackathon | Plume Network

  • Report ID: #49731

  • Report Type: Smart Contract

  • Report severity: High

  • Target: https://github.com/immunefi-team/attackathon-plume-network/blob/main/plume/src/facets/StakingFacet.sol

  • Impacts:

    • Theft of unclaimed yield

Description

Brief/Intro

When a reward token is removed and later re-added, _initializeRewardStateForNewStake (plume/src/facets/StakingFacet.sol) only initializes per-user tracking for the tokens that are currently active. If user stake and then remove, their userValidatorRewardPerTokenPaidTimestamp for that token is never set.

Vulnerability Details

After the token is re-added and rewards accrue (funded by other stakers), the same user can:

  • Wait until the token is removed again (or simply remain inactive).

  • Stake a large amount after removal.

  • Call claim and receive rewards calculated from the old timestamp (often 0), as if their new stake had existed during the entire accrual window.

Impact Details

The attacker can drain the reward pool for the affected token.

Proof of Concept

Was this helpful?