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.