The MondrianWallet2::_executeTransaction
function does not check for transaction reuse when owners execute transactions.
This allows an owner to re-execute the same validated transaction several times, potentially compromising the integrity and security of protocol.
In the absence of transaction reuse verification mechanisms, a malicious owner can repeatedly initiate unauthorized actions, resulting in financial losses and other risks for authorized users of the contract. Potentially, if the transaction is stuck in an infinite loop, this can also lead to a DoS.
A malicious owner defines its transaction
The malicious owner uses his transaction as many times as he likes
Copy / Paste the following test into ModrianWallet2Test.t.sol
By repeatedly executing the same transaction with the same signature, contract does not check whether a transaction with this signature has already been processed. This could potentially lead to unwanted side-effects or repeated actions that affect the protocol integrity.
Manual review
Add a mapping to store the nonces of transactions already executed and modify the _executeTransaction function to check whether the transaction nonce has already been used before executing it:
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.