Normal behavior: In many timelock-governed multisig workflows, signers expect the timelock delay to provide a predictable “cooldown window” after a transaction is effectively approved (i.e., after reaching the required confirmations), so that execution cannot happen immediately upon the last confirmation.
Issue: This implementation anchors the timelock strictly to proposedAt (proposal timestamp), not to the time when quorum is reached. As a result, a transaction can sit unconfirmed for most (or all) of the delay period, and then become executable immediately when the final confirmation is submitted—eliminating the expected post-approval waiting window.
Likelihood:
In normal usage, proposals can remain pending for extended periods while signers coordinate approvals (hours/days), especially for higher-value transfers that have longer delays.
Impact:
The effective timelock protection can be reduced to near-zero at the moment quorum is reached, enabling immediate execution right after the final confirmation.
Paste this test into MultiSigTimelock.t.sol. It shows that for a transaction requiring a 1-day timelock (e.g., 5 ETH), if you wait almost 1 day after proposing and only then collect confirmations, execution can succeed immediately after reaching quorum.
Anchor the timelock start to the time quorum is reached (or explicitly document the current semantics). One approach is to store a “quorum reached at” timestamp when confirmations hit REQUIRED_CONFIRMATIONS, and base executionTime on that timestamp.
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.