51899 sc medium partial distribution of yield will fail if the totalefficentive supply increases

  • Submitted on: Aug 6th 2025 at 14:06:14 UTC by @TeamJosh for Attackathon | Plume Network

  • Report ID: #51899

  • Report Type: Smart Contract

  • Report severity: Medium

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

  • Impacts:

    • Temporary freezing of funds for at least 24 hours

    • Smart contract unable to operate due to lack of token funds

Description

Brief/Intro

When distributing yields, the total effective supply is used to determine the share that each person gets based on their balance. This supply is calculated every time distributeYieldWithLimit is called. The total effective supply increases when more tokens are minted, and since the Arc token is mintable, there is a chance that this will occur.

Vulnerability Details

Assuming that there are 10 holders, all holding 100 tokens each.

The admin distributes 100 yield to the first 5 token holders; they will each get 10 yield tokens. The next step will be to distribute the remaining 50 tokens to the remaining 5 token holders. This will work perfectly on a normal day; however, if the token total supply increases before the second batch is distributed, then the distribution will fail due to insufficient balance in the contract, and the remaining reward per holder will be diluted.

Relevant snippet:

Note: The Arc token admin/minter can be anyone, including a smart contract that controls the minting of tokens; they are not necessarily protocol admins.

Impact Details

  1. Rewards will be temporarily stuck as the distributeYieldWithLimit function will fail on subsequent batches.

  2. Rewards for subsequent batches will be diluted.

References

https://github.com/immunefi-team/attackathon-plume-network/blob/main/arc/src/ArcToken.sol?utm_source=immunefi#L540

Proof of Concept

PoC test (click to expand)

Add the following test to the test/ArcToken.t.sol file.

Output:

Was this helpful?