An arbitrary external user can influence the frequency of vault upgrades.
Inbound deposits to a VaultControllerStrategy must unconditionally always ensure the first vault they deposit to is equal to the groupDepositIndex:
However, each successful deposit groupDepositIndex also configures the next groupDepositIndex.
Consequently, a caller can append an arbitrary vaultId to the end of their array of vaultIds to extert control over the groupDepositIndex.
Depositing into a VaultControllerStrategy is permissionless.
Through negligible donations, a user can force their vault to receive more deposits on average by forcing depositors to include their chosen vault by prioritising the groupDepositIndex to match their chosen vault.
If _vaultIds[0] does not start at groupDepositIndex, the call is reverted. This means an attacker can therefore cheaply modify the groupDepositIndex as a means to DoS inbound deposits.
Manual Review
Do not enforce which vaults should be deposited into based upon conditions which can be influenced by untrusted parties.
Always ensure a nontrivial minimum deposit is returned via getVaultDepositLimits(), never allow this to be 0.
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.