onlyOwner RestrictionThe contract logic for proposing transactions uses the onlyOwner modifier, restricting proposal initiation solely to the contract administrator. This directly violates the project design, stating that all signers should be able to propose transactions, centralizing the proposal workflow to a single account.
The MultiSigTimelock contract is designed to allow all addresses holding the SIGNING_ROLE to participate in the entire lifecycle of a transaction (propose, confirm, execute). However, the external facing proposeTransaction function enforces an overly strict access control check:
By including onlyOwner at [MultiSigTimelock.sol:253], only the contract deployer/administrator (who holds the Ownable role) can call this function. Other signers, added via grantSigningRole and possessing only the SIGNING_ROLE, are excluded from proposing new transactions. This undermines the decentralized nature of a multi-signature wallet proposal mechanism and violates the Signer Capabilities.
Likelihood: High
It centralizes the most critical step of the workflow (initiation) to a single key.
If the Owner key is lost or compromised, the entire system enters a deadlock where no new transactions can ever be processed, essentially strictly bricking the contract's utility, even if 4 other verified signers are active and ready.
Impact: High
The issue is present in the deployed code logic and will trigger 100% of the time a non-owner signer attempts to propose a transaction. There are no complex preconditions other than "be a signer who is not the owner".
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.
The contest is complete and the rewards are being distributed.