In the multi-signature wallet contract, the contract owner is automatically granted the SIGNING_ROLE and becomes the first signer.
Under normal circumstances, the owner should retain the signer identity at all times to participate in multi-signature operations.
However, the revokeSigningRole function allows the owner to remove their own SIGNING_ROLE, causing the owner to lose critical transaction operation capabilities.
Likelihood:
Administrator misoperation or erroneous invocation of revokeSigningRole(owner) by automated scripts
Accidental revocation of self-permissions by the outgoing administrator during handover procedures
Social engineering attacks inducing administrators to execute self-revocation operations
Impact:
The owner loses eligibility to confirm transactions, revoke confirmations, and execute transactions, becoming unable to participate in the multi-signature process
The contract enters a "manageable but unusable" state, requiring re-authorization to restore normal functionality
Violates the design intent of the multi-signature wallet, conflicting with the dual-identity description of the administrator in documentation
Add the test_revokeSigningRole_Owner function to test/unit/MultiSigTimelockTest.t.sol as follows:
Run the command in the console: forge test --mt test_revokeSigningRole_Owner -vv
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.