Scope
src/MultiSigTimelock.sol: Transaction.proposedAt, _executeTransaction
Normal behavior: Timelock should begin once enough signers approve a high-value action.
Issue: The delay is anchored to proposedAt, so an attacker can propose a 100+ ETH transfer, wait seven days off-chain, then gather three confirmations in one block and execute instantly without any post-approval delay.
Likelihood:
Reason 1 // Signers often batch approvals after review windows
Reason 2 // Attackers can pre-position proposals and only seek confirmations when opportune
Impact:
Impact 1 // High-value transfers or governance calls execute with effectively zero notice after approval
Impact 2 // Monitoring systems keyed off “confirmations reached” lose the expected buffer window
Explanation: Propose a 150 ETH transfer, wait 7 days, then obtain three confirmations in a single block. Execution succeeds immediately because proposedAt + SEVEN_DAYS_TIME_DELAY already elapsed.
Explanation: Start the timelock when the final confirmation is recorded (or when the quorum threshold is first met) by storing readyAt on threshold crossing.
Status: Valid (Design Flaw)
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.