In OperatorVCS contract, vaultMapping represents if a vault is active or not.
However, when a vault is removed through removeVault, it does not update the mapping status, as a result, the vault is regarded active even after it's removed.
The vaultMapping in OperatorVCS contract represents if a vault is active or not.
Logically, when a vault is added it should be set to true, and when a vault is removed, it should be set to false.
But removeVault does not set the mapping, which keeps the removed vault still active.
Here's the main issue that can be caused by removed vault being active:
As shown in the above code snippet, withdrawOperatorRewards function is only called by active vault to withdraw rewards.
Since vaultMapping for the removed vault remains true, the removed vault can call this function to potentially withdraw assets from the VCS.
Unauthorized access to withdrawOperatorRewards function by removed vault and potentially steal rewards from the VCS.
Manual Review
When removeVault is called, it should set vaultMapping to false.
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.