All the VCS contracts, community and operator are proxies using OpenZeppelin version 4.7.0. This kind of proxies require a storage gap variable at the end to guarantee safe upgradeability just in case the future implementation needs more state.
Every upgradeable contract that is inherited by a proxy should implement a gap in order to be safe. Yet the Strategy contract does not implement this gap affecting the security and safety of upgrading CommunityVCS and OperatorVCS contracts.
See there is no gap here.
See inherited here. VaultControllerStrategy is used by both CommunityVCS and OperatorVCS.
Future upgrades that require more storage in the Strategy contract will corrupt the storage of the existing contracts.
Add the gap variable as it is already done in other contracts of the system.
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.