51276 sc low arctokenpurchase re enabling active token sales causes accounting corruption and token loss
Submitted on Aug 1st 2025 at 11:08:35 UTC by @rilwan99 for Attackathon | Plume Network
Report ID: #51276
Report Type: Smart Contract
Report severity: Low
Target: https://github.com/immunefi-team/attackathon-plume-network/blob/main/arc/src/ArcTokenPurchase.sol
Impacts:
Permanent freezing of funds
Description
Brief / Intro
The ArcTokenPurchase.enableToken() function lacks validation to prevent re-enabling already enabled tokens, which leads to accounting inconsistencies and Arc Tokens being permanently locked in the contract.
Impact Details
Token Loss: Unsold tokens become permanently locked when
amountSoldresets to 0.Accounting Mismatch: Mismatch between actual contract balance and recorded availability.
Proof of Concept
Token Admin Re-enables (Bug Trigger)
Admin calls
enableToken(tokenAddr, 50e18, 20e6)// Admin wants to change priceState becomes:
totalAmountForSale = 50e18, amountSold = 0, isEnabled = true// OVERWRITTENContract still holds 60 Arc Tokens, but accounting shows only 50 available
Impact: 10 Arc Tokens (60e18 - 50e18) are left permanently stuck in the contract and not accounted for. There is no way to withdraw/recover these funds.
Was this helpful?