The MultiSigTimelock contract has a hardcoded requirement of 3 confirmations to execute any transaction (REQUIRED_CONFIRMATIONS = 3). However, the revokeSigningRole function allows the owner to remove signers until only 1 remains (s_signerCount <= 1 check).
If the number of signers is reduced below 3 (e.g., to 2), it becomes mathematically impossible to reach the required 3 confirmations. This effectively bricks the wallet, permanently freezing all funds and operations, as no new transaction can ever be executed. This violates the safety guarantee stated in the README ("prevents bricking the wallet").
Likelihood: Medium (Requires owner to revoke signers, but is a permitted action).
Impact: Critical (Permanent loss of funds/protocol freeze).
Deploy MultiSigTimelock.
Grant roles to Alice and Bob (Total signers = 3: Owner, Alice, Bob).
Revoke Alice (Total = 2).
Propose a transaction.
Owner and Bob confirm (Total confirmations = 2).
Try to execute. Parameters: executeTransaction(id).
Transaction reverts with MultiSigTimelock__InsufficientConfirmations, and can never succeed.
Update the check in revokeSigningRole to ensure the signer count does not drop below the required confirmations.
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.