A logical error in the cancel function's access control check allows any user to cancel governance proposals due to incorrect use of logical AND (&&) instead of OR (||).
In the following function, it uses && (AND) instead of || (OR) in its access control check. This means the function will only revert if both conditions are true:
The caller is not the proposer AND
The proposer's voting power is above threshold
As a result, any external account can cancel a proposal when the proposer still has sufficient voting power, which completely bypasses the intended access control.
Any external account can cancel active governance proposals
Potential for governance disruption through mass cancellation of proposals
Breaks fundamental access control assumptions
Could be used as a denial-of-service vector against the governance process
Undermines the reliability of the governance system
Manual code review
Change the logical operator from && to ||:
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.