Root: MultiSigTimelock::proposeTransaction only allows the owner of the contract (i.e. first signer) to propose the transactions, and no one else.
Impact: Due to this, the contract becomes centralised in more than one scenario, literally failing the promise that "any signer can propose transactions" in the docs.
Normal Behaviour: All users who are granted the SIGNING_ROLE can propose transactions without any restriction.
Issue: Due to the presence of the onlyOwner modifier in the proposeTransaction function, only the owner of this contract is allowed to propose any new transactions.
Likelihood: High
It's obvious that any user with SIGNING_ROLE will try to propose transactions, but ends up being disappointed.
Impact: Medium
Provides the Centralisation tag to this protocol
Breaks the promise made by the protocol
However, there's no financial harm due to this. Just a loss of a feature to signers.
Pls add test__OnlyOwnerCanProposeTransactions test to test/unit/MultiSigTimelockTest.t.sol file
Run the test using: forge test --mt test__OnlyOwnerCanProposeTransactions -vv
Here's what the logs show:
Simply replace the onlyOwner modifier with onlyRole(SIGNING_ROLE), leading any user with SIGNING_ROLE to propose the transaction.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.