Nouns DAO contest - yixxas's results

A DAO-driven NFT project on Ethereum.

General Information

Platform: Code4rena

Start Date: 22/08/2022

Pot Size: $50,000 USDC

Total HM: 4

Participants: 160

Period: 5 days

Judge: gzeon

Total Solo HM: 2

Id: 155

League: ETH

Nouns DAO

Findings Distribution

Researcher Performance

Rank: 113/160

Findings: 1

Award: $35.44

🌟 Selected for report: 0

🚀 Solo Findings: 0

Lines of code

https://github.com/code-423n4/2022-08-nounsdao/blob/c1c7c6201d0247f92472419ff657b570f9104565/contracts/governance/NounsDAOLogicV2.sol#L839

Vulnerability details

Impact

_setVetoer() is extremely important to the security of this contract as the vetoer holds the power to stop any proposal from being executed. If vetoer is set to an address without an owner, it can open up the protocol to governance attack as explained by Dialectic. If vetoer is set to a malicious actor, all funds in the protocol will be stuck in contract as all proposals can be vetoed.

Proof of Concept

_setVetoer() does not check that newVetoer address is not the 0 address nor require the target address to accept this transfer of vetoer.

NounsDAOLogicV2.sol#L839-L845

    function _setVetoer(address newVetoer) public {
        require(msg.sender == vetoer, 'NounsDAO::_setVetoer: vetoer only');

        emit NewVetoer(vetoer, newVetoer);

        vetoer = newVetoer;
    }

Consider adding an acceptVetoer() function similar to the one required for changing of admin.

#0 - Shungy

2022-08-28T04:41:29Z

This is a design choice, not a vulnerability. It should have been in QA report.

AuditHub

A portfolio for auditors, a security profile for protocols, a hub for web3 security.

Built bymalatrax © 2024

Auditors

Browse

Contests

Browse

Get in touch

ContactTwitter