Under normal operation, each signer may confirm a pending transaction, and the transaction becomes executable once the required confirmation threshold is reached.
Signers can be revoked by the owner to reflect governance changes, key rotations, or compromised accounts.
The issue is that revoking a signer does not invalidate or remove their past confirmations, allowing approvals from revoked signers to continue counting toward execution.
This breaks the assumption that only current signers influence transaction execution and allows outdated or unauthorized approvals to affect protocol state.
Likelihood:
Governance operations regularly remove or rotate signers over time.
Long-lived pending transactions accumulate confirmations across multiple governance epochs.
Impact:
Revoked signers continue to influence execution of pending transactions.
Transactions can execute without approval from the current signer set.
This PoC demonstrates that a signer’s approval remains valid even after their signing authority has been revoked:
A transaction is proposed.
A signer confirms the transaction.
The signer is revoked by the owner.
The transaction is executed successfully using the revoked signer’s confirmation.
This shows that execution logic does not validate confirmations against the current signer set.
Invalidate Confirmations on Revocation
Function: revokeSigningRole(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.