Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

A proposal can be vetoed before it’s created #440

Closed
code423n4 opened this issue Sep 15, 2022 · 4 comments
Closed

A proposal can be vetoed before it’s created #440

code423n4 opened this issue Sep 15, 2022 · 4 comments
Labels
2 (Med Risk) Assets not at direct risk, but function/availability of the protocol could be impacted or leak value bug Something isn't working duplicate This issue or pull request already exists sponsor disputed Sponsor cannot duplicate the issue, or otherwise disagrees this is an issue

Comments

@code423n4
Copy link
Contributor

Lines of code

https://github.com/code-423n4/2022-09-nouns-builder/blob/main/src/governance/governor/Governor.sol#L387

Vulnerability details

Impact

Currently, there is nothing preventing a malicious vetoer from vetoing a proposal before it is created.

Proof of Concept

A proposal is discussed
A proposer is set to call propose on the Governor contract
The vetoer is opposed to this proposal
The vetoer copies the proposal hash and vetoes the proposal before it can be created so that it’s dead on arrival.

Recommended Mitigation Steps

Check if the proposal exists before vetoing.

@code423n4 code423n4 added 2 (Med Risk) Assets not at direct risk, but function/availability of the protocol could be impacted or leak value bug Something isn't working labels Sep 15, 2022
code423n4 added a commit that referenced this issue Sep 15, 2022
@GalloDaSballo
Copy link
Collaborator

This is equivalent to saying vetoer can veto all proposals / cannot be removed, will investigate

@GalloDaSballo
Copy link
Collaborator

While other reports have shown how a non-existant Vetoer can enable 51% attacks, this report is showing how a Vetoer can deny any proposal from ever being executed.

Unfortunately there doesn't seem to be a design space that would protect from both a 51% attack and not give power to the vetoer to deny any transaction.

Having vetoer set to doxed member of the community may help limit an imbalance of power, however, due to this risk, the long term goal of the project should be to burn the veto keys as they can be used to inhibit any future operation

@iainnash
Copy link
Collaborator

iainnash commented Sep 26, 2022

The DAO design is to have the vetoer resign their veto power as soon as possible to prevent these sorts of situations.

Would say this doesn't warrent Med risk.

@iainnash iainnash added the sponsor disputed Sponsor cannot duplicate the issue, or otherwise disagrees this is an issue label Sep 26, 2022
@GalloDaSballo
Copy link
Collaborator

Dup of #622

Ultimately a malicious Vetoer is a security / trust risk for end users and we will flag it because of the User-Facing nature of these reports.

However, technically, because you can just re-issue a proposal with a slightly different string value, the issue is not so much technical as it is rooted in "Trust of the Vetoer", hence dup of #622 is more appropriate than having a separate issue

@GalloDaSballo GalloDaSballo added the duplicate This issue or pull request already exists label Sep 28, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2 (Med Risk) Assets not at direct risk, but function/availability of the protocol could be impacted or leak value bug Something isn't working duplicate This issue or pull request already exists sponsor disputed Sponsor cannot duplicate the issue, or otherwise disagrees this is an issue
Projects
None yet
Development

No branches or pull requests

3 participants