Closed code423n4 closed 1 year ago
0xSorryNotSorry marked the issue as primary issue
yahgwai marked the issue as sponsor disputed
Only tokens delegated to the EXCLUDE_ADDRESS should be excluded. All others are considered votable.
0xean marked the issue as unsatisfactory: Invalid
Lines of code
https://github.com/ArbitrumFoundation/governance/blob/c18de53820c505fc459f766c1b224810eaeaabc5/src/security-council-mgmt/governors/modules/ArbitrumGovernorVotesQuorumFractionUpgradeable.sol#L31-L35
Vulnerability details
Bug Description
In
ArbitrumGovernorVotesQuorumFractionUpgradeable
, thegetPastCirculatingSupply()
function is used when calculating quorum for proposals:ArbitrumGovernorVotesQuorumFractionUpgradeable.sol#L31-L35
As seen from the natspec comment above,
getPastCirculatingSupply()
is supposed to return the circulating votes supply (ie. total number of votes - excluded votes).However, it uses the
getPastTotalSupply()
function, which returns the token's total supply instead:ERC20VotesUpgradeable#L88
This becomes an issue as it is possible for a user to hold tokens, but have no votes, causing total supply to be greater than the actual number of votes. For example, if a user delegates his votes to
address(0)
, his tokens will have no corresponding votes as the zero address cannot hold votes:ERC20VotesUpgradeable.sol#L225
As such, total supply will now be larger than the total number of votes.
In this scenario, the user's tokens should not be included in the amount used to calculate quorum. This has been confirmed by the sponsor as well:
However,
getPastCirculatingSupply()
will still count his tokens as it uses total supply. As such, the calculation for quorum is now inaccurate.Impact
As
getPastCirculatingSupply()
uses the total supply of ARB tokens instead of the circulating votes supply, quorum calculation is now inaccurate.This affects both the
SecurityCouncilNomineeElectionGovernor
andSecurityCouncilMemberRemovalGovernor
contracts, as nominee and member removal elections require proposals to pass quorum (0.2% and 10% respectively).Recommended Mitigation
Consider documenting that quorum is calculated based on the total supply of ARB tokens instead.
Assessed type
Error