The veto power is important functionality in a governance system in order to protect from malicious proposals. Govenance.sol lacks this functionality, as a result, the protocol is vulnerable to 51% attacks.
In Governance.sol, proposals can be made, voted on, and executed/cancelled through the timelock controller. Casting a vote on a proposal involves querying the user's voting power/weight and the for and against votes by the subsequent weight.
While veRAAC tokens are non transferrable, actual raac token can be transferred and locked for veRAAC tokens. Nothing prevents a whale or a group of malicous actors from getting lot of raac tokens and keeping them under a central control e.g a smart contract. The tokens will then be locked for veRAAC tokens granting them a large voting power (potentially a large supply of all available veRAAC tokens).
With this power, proposals that cannot be challenged can be made and voted upon. Due to the now large voting power, quorum can be easily reached and the proposal can be executed or if a proposal is not supported by these users, voted against.
Since there's no veto power to vote against these types of proposals, it's possible for malicious actors to achieve a 51% attack on the governance system leading to a potential loss of DAO control.
Manual Review
Easiest way to fix this is to introduce a veto power in Governance.sol.
Another option would be adding a limit to the amount of veRAAC tokens that can be minted to a single account. This, why not very effective due to sybils, would go a long way towards limiting the possibility of a single addresse's hold over a large supply of veRAAC tokens.
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.