The Vault contract can be initialized by anyone. Once set, it can not be undone.
the initVault()
could be set by anyone since there are no restrictions. In doing so, an attacker could frontrun initializing the vault - both the Airdrop Vault and the Staking vault with any address they want for the managerContract. The managerContract has the approval to move the funds whereever they want, potientially stealing all the funds and disabling the Staking / Airdrop contracts due lack of funds. once the vaults are initialized, it can not become undone due to the revert.
Loss of funds.
hardhat
add an ownerOnly modifier to protect any malicious attackers and possibly make another function to update the managerContract incase of error.
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.