The revokeSigningRole function is intended to remove a signer's privileges, updating the signer array, mapping, and role while ensuring the wallet maintains at least one signer, to securely manage access in response to compromises or changes.
However, the function fails to invalidate or remove the revoked signer's existing confirmations on pending transactions, allowing their signatures to persist in the s_signatures mapping and keeping the transaction's confirmation count inflated, which can lead to unintended executions of potentially malicious transactions even after revocation.
Likelihood:
During incident response when revoking a compromised signer after they have already confirmed transactions.
In ongoing wallet management where signers are rotated but pending transactions carry over stale confirmations from removed members.
Impact:
Execution of malicious or unauthorized transactions post-revocation, potentially draining wallet funds if the remaining quorum confirms without realizing the lingering signature.
Erosion of security guarantees in the multi-signature process, allowing partial compromises to succeed and leading to financial losses or loss of trust in the wallet's governance.
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.