52706 sc low multi quantity prize claims revert until all winners are drawn freezing early winners
Submitted on Aug 12th 2025 at 14:36:49 UTC by @wellbyt3 for Attackathon | Plume Network
Report ID: #52706
Report Type: Smart Contract
Report severity: Low
Target: https://github.com/immunefi-team/attackathon-plume-network/blob/main/plume/src/spin/Raffle.sol
Impacts: Temporary freezing of funds for at least 1 hour
Description
Brief/Intro
claimPrize() reverts for multi-quantity prizes until all winners are drawn, so early winners (e.g., week 1 of a 4-week raffle) can’t claim until the final draw, temporarily freezing their prize.
Vulnerability Details
When a raffle participant wins a prize, they call claimPrize() to claim the prize they won.
However, this call will revert if the quantity of the prize is > 1 and all the winners haven't been drawn:
function claimPrize(uint256 prizeId, uint256 winnerIndex) external {
if (prizes[prizeId].isActive && winnersDrawn[prizeId] < prizes[prizeId].quantity) {
revert WinnerNotDrawn();
}
...SNIP...
}This causes an issue if the same prize is intended to be distributed (for example once a week for 4 weeks).
A user who wins the prize in week 1 won't be able to claim until after the week 4 prize has been drawn, temporarily freezing the prize they're entitled to.
Impact Details
Temporary freezing of funds (i.e., raffle prizes).
References
https://github.com/immunefi-team/attackathon-plume-network/blob/580cc6d61b08a728bd98f11b9a2140b84f41c802/plume/src/spin/Raffle.sol#L298-L301
Proof of Concept
Reproduction Steps
Notes
This is a logical bug that causes early winners of multi-quantity prizes to be unable to claim their prize until the final winner has been drawn (temporarily freezing the prize).
Severity assessed as Low, impact is temporary freezing of prizes until draws complete.
Was this helpful?