When the owner revokes a signer's role in the MultiSigTimelock::revokeSigningRole function, the user may have already signed a proposed transaction. The issue is it will be counted towards the required threshold of MultiSigTimelock::REQUIRED_CONFIRMATIONS constant.
This way, if only 2 of the current signers confirm the transaction, it will be passed and ready for execution while it should not be.
Likelihood:
It is quite likely in the process of a live protocol to have many open (not yet executed) proposed transactions.
Impact:
The impact can be severe due to the confirmation made by someone who does not have any responsibility about the consequences of their decisions anymore.
Please add the following function to the test file and run it using forge test --mt testRevokedSignerCanAffectConfirmations -vvvv command in the terminal window.
To solve the issue make the following changes. However, due to the huge number of transactions over time it can cause DoS and run out of gas. So the proper solution is to have an array of the current (not yet executed) transactions and traverse it looking for the ones signed by the already revoked signer.
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.