The contract suffers from a logic contradiction: it implements AccessControl for decentralized management but restricts critical functions via the onlyOwner modifier. This hardcoded dependency bypasses the intended role-based hierarchy, centralizing all power into a single address.
This creates a Single Point of Failure. A single compromised private key (Owner) can bypass the entire multi-sig consensus, rendering the 3-of-N security model useless and placing all funds under the control of a single individual.
Likelihood:
The inclusion of the onlyOwner modifier on core functions creates a permanent architectural vulnerability that exists from the moment of deployment.
The current implementation forces a centralized execution flow, making it impossible for the contract to function as a decentralized multi-sig even under normal operating conditions.
Impact:
Impact 1 (Total Centralization): The entire 3-of-N security model is invalidated, transforming a secure multi-signature vault into a high-risk single-signature wallet.
Impact 2 (Asset Vulnerability): A single point of failure is introduced where a compromised Owner key leads to the immediate and total loss of control over all locked funds, with no way for other signers to intervene.
Add the Test: Copy the provided test_SignersCannotPropose function into your test suite (e.g., test/unit/MultiSigTimelockTest.t.sol).
Run the Test: Execute the following command in your terminal:
Replace the onlyOwner modifier with onlyRole(SIGNING_ROLE) in the proposeTransaction function. This change aligns the contract with a decentralized architecture by allowing any authorized signer to propose actions, rather than restricting this power to a single address.
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.