The protocol's veRAAC token implementation does not restrict transfers, allowing malicious users to vote multiple times on governance proposals. By repeatedly transferring veRAAC tokens between addresses, an attacker can amplify their voting power, leading to governance manipulation.
veTokens (vote-escrowed tokens) are meant to be non-transferable to ensure fair and long-term governance participation. However, the protocol's veRAAC token lacks transfer restrictions in transfer() and transferFrom(), allowing users to move veRAAC between wallets. This enables a vote amplification exploit, where a user can:
Vote on a governance proposal.
Transfer veRAAC to another wallet.
Vote again from the new wallet.
Repeat the process indefinitely, skewing governance results.
This completely breaks governance security, as decisions are no longer made by long-term aligned token holders, but by those who can move tokens quickly.
Severity: Critical
Governance can be hijacked, leading to malicious protocol changes, such as:
Whitelisting a malicious contract.
Changing reward distribution unfairly.
Draining treasury funds.
The integrity of all governance votes is compromised, making the system unreliable.
Manual code review
Make veRAAC non-transferable by overriding transfer() and transferFrom() to always revert:
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.