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

ZeroExOperator #3

Open
code423n4 opened this issue Nov 11, 2021 · 0 comments
Open

ZeroExOperator #3

code423n4 opened this issue Nov 11, 2021 · 0 comments
Assignees
Labels
0 (Non-critical) Code style, clarity, syntax, versioning, off-chain monitoring (events etc), exclude gas optimisation bug Something isn't working sponsor confirmed Sponsor agrees this is a problem and intends to fix it (OK to use w/ "disagree with severity")

Comments

@code423n4
Copy link
Contributor

Handle

TomFrench

Vulnerability details

Impact

Reduced ease of verifying correctness

Proof of Concept

ZeroExOperator uses the Create2 library to deploy ZeroExOperatorStorage. Create2 also exposes a computeAddress function which can be used to recalculate the address of ZeroExOperatorStorage but ZeroExOperator instead uses a homebrew calculation in storageAddress.

https://github.com/code-423n4/2021-11-nested/blob/5d113967cdf7c9ee29802e1ecb176c656386fe9b/contracts/operators/ZeroEx/ZeroExOperator.sol#L55-L65

https://github.com/OpenZeppelin/openzeppelin-contracts/blob/57630d2a6466dff65aa7ca67b3fa23d5e6d1474a/contracts/utils/Create2.sol#L57-L64

The implementation is identical but using standard library code avoids the need for verification and minimises possible mistakes.

Recommended Mitigation Steps

Replace storageAddress with

    function storageAddress(address own) public pure returns (address) {
       return Create2.computeAddress(
            bytes32("nested.zeroex.operator"),
            keccak256(type(ZeroExStorage).creationCode)
            own,
        );
    }

@code423n4 code423n4 added 0 (Non-critical) Code style, clarity, syntax, versioning, off-chain monitoring (events etc), exclude gas optimisation bug Something isn't working labels Nov 11, 2021
code423n4 added a commit that referenced this issue Nov 11, 2021
@maximebrugel maximebrugel self-assigned this Nov 17, 2021
@maximebrugel maximebrugel added the sponsor confirmed Sponsor agrees this is a problem and intends to fix it (OK to use w/ "disagree with severity") label Nov 23, 2021
@maximebrugel maximebrugel removed their assignment Nov 25, 2021
@maximebrugel maximebrugel self-assigned this Nov 30, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
0 (Non-critical) Code style, clarity, syntax, versioning, off-chain monitoring (events etc), exclude gas optimisation bug Something isn't working sponsor confirmed Sponsor agrees this is a problem and intends to fix it (OK to use w/ "disagree with severity")
Projects
None yet
Development

No branches or pull requests

2 participants