The queueVaultRemoval and removeVault functions in the OperatorVCS contract lack proper access control, allowing any external actor to queue vaults for removal and remove vaults from the system.
The queueVaultRemoval function (lines 276-297) and the removeVault function (lines 303-330) in the OperatorVCS contract are both declared as external and public respectively, without any access control modifiers. This means that any external account can call these functions, potentially disrupting the intended operation of the vault management system.
The queueVaultRemoval function allows adding a vault to the removal queue, while the removeVault function actually removes the vault from the system, updates accounting, and transfers tokens. These are critical operations that should be restricted to authorized roles, such as the contract owner or a designated manager.
The lack of access control on these functions could lead to several severe issues:
Unauthorized removal of active vaults, disrupting staking operations.
Manipulation of the vault removal queue, potentially leading to incorrect accounting.
Premature removal of vaults that are not ready for removal, causing loss of funds or rewards.
Potential denial of service by repeatedly queueing and removing vaults.
These vulnerabilities could result in significant financial losses, disruption of the staking system, and loss of user trust.
Implement proper access control on both functions to restrict their usage to authorized roles only. This can be achieved by:
Adding an onlyOwner or similar access control modifier to both functions.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.