A critical vulnerability has been identified in the recordVote function of the veRAACToken contract. The function lacks access control mechanisms, allowing any external actor to record votes on behalf of any address. This poses a significant risk to the integrity of the voting system.
The vulnerable function is located in contracts/core/tokens/veRAACToken.sol:
Key issues identified:
No access control modifiers (e.g., onlyGovernance)
No validation of the voter address
No validation of proposal existence or voting period
Any external actor can call this function for any address
The vulnerability can lead to several severe consequences:
1. Vote Manipulation: Attackers can record votes for any address without authorization
Denial of Service: Legitimate voters can be prevented from voting by maliciously marking them as "already voted"
Event Spam: Malicious actors can generate excessive VoteCast events
Governance Disruption: If other contracts rely on these voting records, the entire governance system could be compromised
Manual code review
Static analysis
Control flow analysis
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.