The recordVote function is external and doesn't have any access controls. Anyone can call it and mark any address as having voted on a proposal. There's no check to ensure that only the governance contract or the voter themselves can call this function. An attacker could repeatedly call this function for different voters and proposals, effectively blocking legitimate votes. This would disrupt governance processes and could lead to proposals being decided without proper participation, undermining the decentralized governance model.
Missing permission checks let attackers call recordVote directly:
Attackers can block legitimate voters by marking their addresses as "already voted."
manual review
Add access control
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.