49623 sc low unstaking allows going below minimum stake
Submitted on Jul 17th 2025 at 19:05:26 UTC by @Blobism for Attackathon | Plume Network
Report ID: #49623
Report Type: Smart Contract
Report severity: Low
Target: https://github.com/immunefi-team/attackathon-plume-network/blob/main/plume/src/facets/StakingFacet.sol
Impacts:
Contract fails to deliver promised returns, but doesn't lose value
Description
Brief/Intro
The unstake method in StakingFacet for unstaking a particular amount does not check if the remaining stake is still above the minimum stake. A staker can thus leave a dust stake amount with a validator.
Vulnerability Details
Most places in StakingFacet confirm that the user stake is above minStakeAmount, but unstaking with a specific amount does not do this:
function unstake(uint16 validatorId, uint256 amount) external returns (uint256 amountUnstaked) {
if (amount == 0) {
revert InvalidAmount(0);
}
return _unstake(validatorId, amount);
}Impact Details
Anyone can go below the minimum stake parameter with this method. Financial incentives for this are not immediately clear, but this does lead to storage bloat.
References
See plume/src/facets/StakingFacet.sol
Proof of Concept
Was this helpful?