The MultiSig
contract lacks a mechanism for owners to cancel pending transactions after they have been submitted. This could lead to situations where outdated or unintended transactions remain indefinitely in the contract, potentially causing security or operational issues.
Once a transaction is added to the transactions
array, it cannot be removed or canceled.
Owner A submits a transaction to send 10 ETH to an address.
Owner B realizes the recipient address is incorrect or the transaction is no longer necessary.
Owner B has no way to remove it, leaving the incorrect transaction indefinitely pending unless approved.
No ability to revoke a mistakenly created transaction
Potential griefing vector: One owner A could submit a spam transaction, forcing the other owner B to either approve it or let it remain indefinitely
Blocked contract state: If too many transactions accumulate, owners may struggle to manage the contract efficiently
Manual review
Introduce a cancelTransaction(uint256 _txId)
function that allows owners to revoke a pending transaction before execution.
Owners can remove unintended transactions.
Prevents accumulation of useless or incorrect pending transactions.
Ensures better operational flexibility.
Please read the CodeHawks documentation to know which submissions are valid. If you disagree, provide a coded PoC and explain the real likelyhood and the detailed impact on the mainnet without any supposition (if, it could, etc) to prove your point.
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.