Skip to content

GovernorCountingOverridable allows abstain-only quorum and zero-opinionated-vote pass #654

Description

@rickstaa

Summary

LivepeerGovernor contract allows proposals with zero opinionated votes to succeed. Moreover, even a proposal with 1 wei "against" and 0 "for" votes can succeed if it reaches quorum via "abstain" votes.

Root causes

  • Rounding down is introduced when calculating MathUtils.percOf(opinionatedVotes, quota).
  • The >= equation used to compare forVotes with the quorum-adjusted opinionatedVotes evaluates to, for example, 0 >= 0, and therefore results in _voteSucceeded returning true.

Why it's not an issue

  • Using "abstain" votes to reach a quorum is known and expected behavior.
  • The rounding issue has an impossibly low likelihood of being exploitable: the enforced voting period (currently set to 10 rounds) gives all participants sufficient time to cast opinionated votes and prevent any malicious proposal from passing.
  • The issue is mitigated in real life by having as few as 2 wei more "against" votes than "for" votes.

Out of scope for bug bounty

Reports targeting GovernorCountingOverridable._voteSucceeded via abstain-only voting, zero-opinionated voting, or equal for/against voting are closed as known issues and not eligible for rewards under the Livepeer Immunefi bug bounty program.

References

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    known-issueDocumented, acknowledged non-remediated behavior is not bounty-eligible.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions