MultiSig Timelock

First Flight #55
Beginner FriendlyWallet
100 EXP
View results
Submission Details
Impact: medium
Likelihood: medium
Invalid

Bug Premature executed Flag Causes Permanent Transaction Lock in MultiSigTimelock.sol

Root + Impact

Description

  • executed = true is set before the external call.

  • If the call fails, the transaction is permanently marked executed.

  • Funds become stuck without recovery.

txn.executed = true; // @>
(bool success,) = payable(txn.to).call{value: txn.value}(txn.data);
if (!success) revert MultiSigTimelock__ExecutionFailed();

Risk

Likelihood:

  • Recipient reverts

  • Gas griefing

  • Malformed calldata

Impact:

  • Transaction becomes unexecutable forever

  • Locked ETH


PoC

contract Reverter {
fallback() external payable {
revert();
}
}

Mitigation

❌ Remove

txn.executed = true;

✅ Add (after successful call)

(bool success,) = ...
require(success);
txn.executed = true;
Updates

Lead Judging Commences

kelechikizito Lead Judge 4 days ago
Submission Judgement Published
Invalidated
Reason: Incorrect statement

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.

Give us feedback!