The veRAACToken::recordVote function lacks access control, allowing anyone to record votes on behalf of any voter. This critical vulnerability could enable malicious actors to manipulate the protocol's governance system.
The vulnerability is located in the recordVote function :
The function does not restrict who can call it. Any external address can call recordVote and record a vote on behalf of any voter.
This allows malicious actors to manipulate the voting system by recording votes for other users.
Malicious actors could record votes on behalf of other users, preventing those users from voting on proposals themselves and potentially skewing the results of governance proposals.
Manual Code Review
Restrict the recordVote function to authorized callers, such as the governance contract or a specific voting module. For example:
Define the onlyVotingModule modifier to restrict access:
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.