MultiSig Timelock

First Flight #55
Beginner FriendlyWallet
100 EXP
Submission Details
Impact: medium
Likelihood: high

Proposal creation is restricted to owner (deployer) but the documentation says signers can propose

Author Revealed upon completion

Root + Impact

Description

Any signer with SIGNING_ROLE should be able to create a proposal

The proposeTransaction function applies the onlyOwner modifier instead of onlyRole


function proposeTransaction(...)
external
nonReentrant
noneZeroAddress(to)
@> onlyOwner
returns (uint256)
{
// ...;
}

Risk

Likelihood:

  • Anytime a new proposal is to be created

Impact:

  • Signers cannot create proposal

  • Multi-sig assumptions are broken

Proof of Concept

There is no need for a PoC here

Recommended Mitigation

Replace onlyOwner with onlyRole(SIGNING_ROLE)

function proposeTransaction(address to, uint256 value, bytes calldata data)
external
nonReentrant
noneZeroAddress(to)
- onlyOwner
+ onlyRole(SIGNING_ROLE)
returns (uint256)
{
return _proposeTransaction(to, value, data);
}

Support

FAQs

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

Give us feedback!