ROOTImpact
When a signer is revoked using revokeSigningRole, any confirmations previously provided by that signer on pending transactions remain counted, allowing removed signers to continue influencing transaction execution.
This breaks the core multisig security assumption that only current signers’ approvals are valid.
Likelihood:
Revoking signers is part of normal multisig governance and can occur during signer rotation or key compromise recovery.
Pending transactions commonly exist while signer changes are being made.
Impact:
Removed signers retain effective voting power on pending transactions.
Transactions may be executed without the required number of confirmations from current signers, breaking multisig security guarantees.
// Signers: A1, B2, C3, D4// REQUIRED_CONFIRMATIONS = 3// 1. Owner proposes a transactionproposeTransaction(to, value, data);// 2. Signers A1, B2, C3 confirmconfirmTransaction(txId); // A1confirmTransaction(txId); // B2confirmTransaction(txId); // C3// confirmations = 3// 3. Owner revokes signer C3revokeSigningRole(C3);// 4. Transaction is still executableexecuteTransaction(txId); // succeeds although C3 is no longer a signerExplanation:This PoC shows that a signer can be revoked after confirming a transaction, yet their confirmation is still counted. As a result, the transaction remains executable even though the revoked signer is no longer part of the multisig.
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.