Nouns Builder contest - Diana's results

A permissionless, governed protocol to deploy nouns-style DAOs complete with treasury, generative collections, and governance mechanisms.

General Information

Platform: Code4rena

Start Date: 06/09/2022

Pot Size: $90,000 USDC

Total HM: 33

Participants: 168

Period: 9 days

Judge: GalloDaSballo

Total Solo HM: 10

Id: 157

League: ETH

Nouns Builder

Findings Distribution

Researcher Performance

Rank: 140/168

Findings: 1

Award: $60.77

๐ŸŒŸ Selected for report: 0

๐Ÿš€ Solo Findings: 0

L-01 NON-LIBRARY/INTERFACE FILES SHOULD USE FIXED COMPILER VERSIONS, NOT FLOATING ONES

In the contracts, floating pragmas should not be used. Contracts should be deployed with the same compiler version and flags that they have been tested with thoroughly. Locking the pragma helps to ensure that contracts do not accidentally get deployed using, for example, an outdated compiler version that might introduce bugs that affect the contract system negatively.

Proof of Concept

There were 5 instances of this issue.

https://github.com/code-423n4/2022-09-nouns-builder/blob/main/src/lib/proxy/ERC1967Proxy.sol#L2

File: src/lib/proxy/ERC1967Proxy.sol #1 pragma solidity ^0.8.4;

https://github.com/code-423n4/2022-09-nouns-builder/blob/main/src/lib/proxy/ERC1967Upgrade.sol#L2

File: src/lib/proxy/ERC1967 #2 pragma solidity ^0.8.4;

https://github.com/code-423n4/2022-09-nouns-builder/blob/main/src/lib/proxy/UUPS.sol#L2

File: src/lib/proxy/UUPS.sol #3 pragma solidity ^0.8.4;

https://github.com/code-423n4/2022-09-nouns-builder/blob/main/src/lib/token/ERC721.sol#L2

File: src/lib/token/ERC721.sol #4 pragma solidity ^0.8.4;

https://github.com/code-423n4/2022-09-nouns-builder/blob/main/src/lib/token/ERC721Votes.sol#L2

File: src/lib/token/ERC721Votes.sol #5 pragma solidity ^0.8.4;

Lock the pragma version


N-01 USE A MORE RECENT VERSION OF SOLIDITY

When deploying contracts, you should use the latest released version of Solidity. Apart from exceptional cases,ย only the latest version receives security fixes. Furthermore, breaking changes as well as new features are introduced regularly.

Proof of Concept

All contracts in auction, governance, manager and token are using the Solidity version 0.8.15

Update to the latest released version of Solidity


N-02 NATSPEC IS INCOMPLETE

Proof of Concept

There are 2 instances of this issue:

https://github.com/code-423n4/2022-09-nouns-builder/blob/main/src/lib/proxy/ERC1967Upgrade.sol#L30-L36

File: src/lib/proxy/ERC1967Upgrade.sol #1 /// @dev Upgrades to an implementation with security checks for UUPS proxies and an additional function call /// @param _newImpl The new implementation address /// @param _data The encoded function call function _upgradeToAndCallUUPS( address _newImpl, bytes memory _data, bool _forceCall

Missing: @param _forceCall

https://github.com/code-423n4/2022-09-nouns-builder/blob/main/src/lib/proxy/ERC1967Upgrade.sol#L51-L57

File: src/lib/proxy/ERC1967Upgrade.sol #2 /// @dev Upgrades to an implementation with an additional function call /// @param _newImpl The new implementation address /// @param _data The encoded function call function _upgradeToAndCall( address _newImpl, bytes memory _data, bool _forceCall

Missing: @param _forceCall

#0 - GalloDaSballo

2022-09-26T21:28:05Z

L-01 NON-LIBRARY/INTERFACE FILES SHOULD USE FIXED COMPILER VERSIONS, NOT FLOATING ONES

NC

N-01 USE A MORE RECENT VERSION OF SOLIDITY

NC

N-02 NATSPEC IS INCOMPLETE

NC

3NC

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