Core Contracts

Regnum Aurum Acquisition Corp
HardhatReal World AssetsNFT
77,280 USDC
View results
Submission Details
Severity: medium
Valid

Voting results can be changed after the voting period

Summary

Voting results can be changed after the voting period

Vulnerability Details

After the voting period, one proposal's voting result should be clear and fixed. After the voting period is over, we can check the over result via interface state(). If the condition currentQuorum < requiredQuorum || proposalVote.forVotes <= proposalVote.againstVotes is met, we will think this proposal as defeated.

The problem here is that requiredQuorum may change after the voting period. For example, there is one proposal, the proposal is defeated because the currentQuorum does not reach requiredQuorum. However, after a few days, the requiredQuorum decreases, this will cause that one defeated proposal to succeed and users can execute this proposal again.

function state(uint256 proposalId) public view override returns (ProposalState) {
uint256 requiredQuorum = quorum();
if (currentQuorum < requiredQuorum || proposalVote.forVotes <= proposalVote.againstVotes) {
return ProposalState.Defeated;
}
}
function quorum() public view override returns (uint256) {
return (_veToken.getTotalVotingPower() * quorumNumerator) / QUORUM_DENOMINATOR;
}

Impact

Users can execute one defeated proposal because the requiredQuorum changes.

Tools Used

Manual

Recommendations

quorum() should return the different quorum according to different timestamp's voting power and settings.

Updates

Lead Judging Commences

inallhonesty Lead Judge 4 months ago
Submission Judgement Published
Validated
Assigned finding tags:

Governance allows execution of previously-defeated proposals if quorum requirements are later lowered, enabling unexpected resurrection of old proposals

inallhonesty Lead Judge 4 months ago
Submission Judgement Published
Validated
Assigned finding tags:

Governance allows execution of previously-defeated proposals if quorum requirements are later lowered, enabling unexpected resurrection of old proposals

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.