In contract veRAACToken, recordVote() is set to external, where ANYONE can pass any voter address and proposalId to vote on proposals without their permission.
In contract veRAACToken, the function recordVote() is accessible by everyone. Therefore, anyone can pass any address for the voter and proposalId.
recordVote()
This would allow anyone to use someone else's address to vote on proposals without their permission.
This should NOT be the intended behaviour, and may result in unintended consequences as the mapping _hasVotedOnProposal could be used for important state change.
Anyone can vote on proposals using someone else's address
Manual
Consider removing the voter address from the parameter, and replace voter address variable with msg.sender. So that, only the owner of account could vote on proposals.
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.