51083 sc insight claimall only loops over active reward tokens and ignores historical tokens
Submitted on Jul 31st 2025 at 00:22:43 UTC by @KlosMitSoss for Attackathon | Plume Network
Report ID: #51083
Report Type: Smart Contract
Report severity: Insight
Target: https://github.com/immunefi-team/attackathon-plume-network/blob/main/plume/src/facets/RewardsFacet.sol
Vulnerability Details
When a token is added it is pushed onto both the
rewardTokensarray and thehistoricalRewardTokenarray (see code in the target repository).When a token is later removed, it is only popped from the
rewardTokensarray (but not fromhistoricalRewardToken).As a result, rewards for historical reward tokens remain claimable, but
claimAll()only iterates over the (active)rewardTokensarray and therefore omits historical tokens.Recommendation: loop over the
historicalRewardTokensarray (or otherwise include historical tokens in the iteration) so thatclaimAll()truly claims all rewards.
Impact Details
claimAll() does not claim all available rewards. Users can still claim rewards for historical tokens by calling claim() individually with a historical reward token. Given this behavior, this report is classified as an insight.
References
Code references are provided throughout the report (see target link above):
RewardsFacet.sol: https://github.com/immunefi-team/attackathon-plume-network/blob/main/plume/src/facets/RewardsFacet.sol
Proof of Concept
Was this helpful?